Ich habe eine .NET-Anwendung, die scheint, einige seiner Abhängigkeitsversionen zwischen dem Debuggen und Ausführen als eine installierte Release-App zu haben. Ich werde mich nur auf die Castle.Core Assembly für meine Details konzentrieren, aber das gleiche Problem tritt bei einigen anderen auch auf. Ein NuGet-Paket, das ich verwende, benötigt Castle.Core als Abhängigkeit (alle Fälle meines Problems beziehen sich auf Assemblys, die von NuGet stammen, falls es darauf ankommt).Assembly Abhängigkeiten ändern nach der Installation
Wenn ich in Visual Studio das NuGet-Paket mit der Castle.Core-Abhängigkeit installiere, läuft alles einwandfrei, sowohl in Debug- als auch in Release-Konfigurationen. Ich kann sehen, dass der Castle.Core-Projektverweis auf Version 3.3.0.0 verweist. Allerdings, wenn ich alles von der Release-Konfiguration mithilfe von Installshield und installieren Sie die Anwendung (mit allen Baugruppen leben im gleichen Programm dir) erzeugte verpacken, erhalte ich diesen Laufzeitfehler:
Could not load file or assembly 'Castle.Core, Version=3.2.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Das NuGet Paket listet die Abhängigkeit von Castle .Core as (≥3.2.0.0 & & < 4.0.0.0). Sowohl 3.2.0.0 als auch 3.3.0.0 erfüllen diese Bedingungen.
Wenn ich Castle.Core manuell auf 3.2.0.0 heruntergrade, zeigt die Referenz meines Projekts, dass es in der Tat herabgestuft wurde. Aber wenn ich das Projekt in Visual Studio laufen lasse, erhalte ich:
Could not load file or assembly 'Castle.Core, Version=3.3.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
mit einer inneren Ausnahme von:
Could not load file or assembly 'Castle.Core, Version=3.2.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Allerdings, wenn ich es dann in ein Installer-Paket, und starten Sie es als installierte Anwendung , Es klappt.
Für mich fühlt es sich so an, als würde die Verpackung der Assemblies in ein Installationsprogramm die Abhängigkeitsversionen ändern. Ich kann mir das nicht vorstellen, aber ich habe Schwierigkeiten, eine bessere Erklärung zu finden.
Kann mir jemand erklären, was hier passiert und wie ich es beheben könnte?
Ich hätte das nie herausgefunden, danke für die Beantwortung Ihrer eigenen Frage. –
Sparte mir viel Zeit! –
Also die Lösung war 'App.config' in Ihrem Installer zu enthalten? – Jess