Laden...

Die gefundene Manifestdefinition der Assembly stimmt nicht mit dem Assemblyverweis überein

Erstellt von hypersurf vor 11 Jahren Letzter Beitrag vor 11 Jahren 19.319 Views
H
hypersurf Themenstarter:in
523 Beiträge seit 2008
vor 11 Jahren
Die gefundene Manifestdefinition der Assembly stimmt nicht mit dem Assemblyverweis überein

Hallo Leute,

ich habe ein WPF-Projekt in der auf vier selbst geschriebene DLLs verwiesen wird, die sich alle mit der korrekten Version im GAC befinden. Die Versionsnummern vergeben wir immer manuell.

Für einige Änderungen wurden zwei der DLLs kürzlich geändert und neu kompiliert. Anschließend wurden Änderungen in dem Programm durchgeführt und dieses ebenfalls kompiliert.

Bei uns auf den Entwicklungsrechnern läuft es ohne Probleme. Beim Kunden installieren wir die DLLs nicht im GAC sondern kopieren alle benötigten DLLs in das Verzeichnis in dem auch die EXE-Datei liegt. Das funktionierte bisher eigentlich auch immer ohne Probleme.

Beim Starten auf dem Zielrechner erscheint folgende Exception:

Fehlermeldung:
Eine unbehandelte Ausnahme ist aufgetreten:

System.Windows.Markup.XamlParseException: Die in der Assembly "XXX PApp, Version=1.0.4.9, Culture=neutral, PublicKeyToken=null" definierte Instanz von "MainWindow" kann nicht erstellt werden. Ein Aufrufziel hat einen Ausnahmefehler verursacht. Fehler in Markupdatei "XXX PApp;component/Views/MainWindow.xaml". ---> System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. ---> System.IO.FileLoadException: Die Datei oder Assembly "XXX.System.WPF, Version=1.0.0.2, Culture=neutral, PublicKeyToken=67ca0fb70dafd111" oder eine Abhängigkeit davon wurde nicht gefunden. Die gefundene Manifestdefinition der Assembly stimmt nicht mit dem Assemblyverweis überein. (Ausnahme von HRESULT: 0x80131040)

Dateiname: "XXX.System.WPF, Version=1.0.0.2, Culture=neutral, PublicKeyToken=67ca0fb70dafd111"

bei XXX_PApp.ViewModels.MainViewModel..ctor()

bei XXX_PApp.MainWindow..ctor()

Das komische ist, das die Datei XXX.System.WPF.dll mittlerweile in Version 19.12.0.1 (wir hatten einen großen Versionssprung) vorliegt, das Projekt aber irgendwie noch auf eine viel ältere Version verweist.

Wenn ich im Projekt-Explorer den Verweis anklicke wird die "Version" mit dem Wert 19.12.0.1 angezeigt.

Beim Kompilieren ist mir folgende Meldung aufgefallen:

Sie können mit "app.config" die XXX.System.WPF, Culture=neutral, PublicKeyToken=67ca0fb70dafd111-Assembly-Version von 1.0.0.2 [] auf 19.12.0.1 [....\Libraries\XXX.System.WPF\XXX.System.WPF\bin\Release\XXX.System.WPF.dll] neu zuordnen, um Konflikte zu lösen und Warnmeldungen zu vermeiden.

Könnt Ihr mir einen Tipp geben, wie ich die Zuordnung neu erstellen kann? Ich konnte bei google irgendwie nichts passendes finden.

Danke 😃

T
94 Beiträge seit 2007
vor 11 Jahren

Ich würde mal Studio schließen, die obj- und bin-Ordner komplett löschen, Visual Studio starten und dann neu kompilieren. Vorher alle referenzierten Assemblies auf die Versionsnummern hin überprüfen.

Evtl. hilft das.

H
hypersurf Themenstarter:in
523 Beiträge seit 2008
vor 11 Jahren

Das Löschen der Ordner hat leider nichts gebracht.

Ich habe heute nochmal diverses ausprobiert:

  • Löschen der Ordner obj und bin und erneutes kompilieren
  • Die app.config von Visual Studio einfügen lassen
  • Die DLLs aus dem GAC entfernt, in der richtigen Reihenfolge kompiliert und die Verweise manuell (per Durchsuchen) auf die Dateien gesetzt. Dann das Projekt neu kompiliert

Ich kann überhaupt nicht nachvollziehen, warum .NET noch nach einer Version 1.0.0.2 sucht. Wenn ich genau dieselbe Version (inkl. aller DLLs) bei uns auf einem blanken Rechner startet funktioniert es. Beim Kunden aber auf keinem einzigen System.

Als Lösung konnte ich bisher leider nur eine Krücke finden: Ich habe die Versionen der DLLs wieder auf 1.0.0.2 zurückgesetzt und alles neu kompiliert. Damit läuft dann auch das Programm beim Kunden 🤔

T
94 Beiträge seit 2007
vor 11 Jahren

Der Fehler liegt meistens zwischen den Ohren.

Vielleicht helfen dir folgende Links weiter:

GetReferencedAssemblies

Assembly Binding Log Viewer

oder du benutzt irgendeinen Reflector und schaust dir dort die ref. Assemblies jeder einzelnen ausgelieferten Assembly an.