Ich habe eine Lösung, die, um es einfach auszudrücken, ein Windows Forms-Anwendungsprojekt und eine Klassenbibliothek in C# ist. Mein Bibliotheksprojekt wurde OldName
genannt. Somit war der Namensraum auch OldName
und die erzeugte Datei war OldName.dll
.VS2010 Baugruppe kann nicht gefunden werden, nachdem sie umbenannt wurde
Ich wollte den Namen ändern, also ging ich in Eigenschaften und änderte den Assembly Name von OldName
zu NewName
.
Gebäude generiert jetzt NewName.dll
. Allerdings, in dem Moment, in dem meine Anwendung versucht, auf diese DLL zuzugreifen, bekomme ich eine System.Runtime.Serialization.SerializationException
(die DLL enthält meine Methoden für die binäre Serialisierung einiger Sachen): Es behauptet, dass Unable to find assembly 'OldName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
Procmon.exe bestätigt, dass es nach der alten DLL (NAME NOT FOUND
) sucht.
nun das Merkwürdige ist, wenn ich die NewName.dll
und benennen Sie sie in OldName.dll
kopieren, so dass ich OldName.dll
und NewName.dll
haben, das Problem weiterhin besteht. Wenn ich NewName.dll
lösche und nur OldName.dll
verlassen, stürzt das Programm beim Start mit: System.IO.FileNotFoundException: Could not load file or assembly 'NewName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
Diesmal Procmon.exe berichtet, dass es einen CreateFileMapping
Betrieb auf OldName.dll
weil FILE LOCKED WITH ONLY READERS
gescheitert, aber es scheint es die gleiche Sache auf NewName.dll
bekommt.
Ändern der Assembly Name zurück zu OldName
behebt alles, aber natürlich wird der Dateiname OldName
und ich will das nicht.
Ich kann nicht für das Leben von mir herauszufinden, wo sonst es den alten Assemblynamen verweist. Was könnte ich vermissen?
LÖSUNG: Mein Programm ermöglicht dem Benutzer, eine Datei zu erstellen, und speichern Sie es dann auf dem Datenträger mithilfe der Serialisierung mit den Methoden in meiner DLL. Es ermöglicht auch das Laden der Datei. Da ich faul war, hatte ich einmal eine Testdatei erstellt und sie immer wieder verwendet. Wie @Tigran vorgeschlagen hat, tauchte der alte Assemblyname immer noch in der serialisierten Datendatei auf. Als ich versuchte, sie aus meinem Programm zu laden, erhalte ich eine Ausnahme, weil die Assembly in der serialisierten Datei nicht gefunden wurde .
Wie verwenden Sie die Serialisierung? Binär, XML, Datenvertrag? Die Antwort in dieser Frage meine Hilfe Sie: http://stackoverflow.com/questions/950992/version-tolerant-serialization-how-to-finden-assemblyname-of-the-original –