2014-03-31 10 views
6

Ich habe meiner Lösung ein vorhandenes Projekt hinzugefügt. Wenn ich alle Unit-Tests mit MSTest Läufer laufen lasse, erhalte ich folgende Fehlermeldung auf ein paar Tests:System.IO.FileLoadException: Datei oder Baugruppe konnte nicht geladen werden Log4net

Nachricht: Prüfnorm soundso Ausnahme ausgelöst hat: System.IO.FileLoadException: Konnte Datei oder Assembly ‚laden log4net , Version 1.2.12.0, Culture = neutral, PublicKeyToken = 669e0ddf0bb1aa2a 'oder eine seiner Abhängigkeiten. Die Manifestdefinition der lokalisierten Assembly stimmt nicht mit der Assemblyreferenz überein. (Ausnahme von HRESULT: 0x80131040)

Ich weiß, andere hatten das gleiche Problem und es gibt andere Fragen und Antworten zu diesem Thema. Aber ich habe viele Dinge ausprobiert, aber nichts half. Die von uns verwendete Version von log4net ist 1.2.13.0.

Ich habe mit FUSLOGVW.exe für Binding-Fehler überprüft. Das log4net wird mit der hinzugefügten Assembly und einer unbekannten Assembly angezeigt. Die Referenz von log4net in der Assembly zeigt Version 1.2.13.0, die mit NuGet hinzugefügt wurde. Es ist also wahrscheinlich eine abhängige Versammlung, die all diese Probleme verursacht. Ich habe versucht, log4net zurück auf Version 1.2.12.0 zu ändern, aber ich bekomme immer noch die gleiche Fehlermeldung.

Wenn ich alle Tests mit MSTest testrunner ausführen, werden diese Fehler angezeigt. Wenn ich nur die fehlgeschlagenen Tests durchführe, werden sie bestanden. Wenn ich sie einzeln führe, gehen sie auch. Ich versuchte verbindliche Umleitung, aber ich habe es für die Baugruppe, die nicht die Testbaugruppe getestet wird. Ich wusste nicht, wie man das für eine Testbaugruppe macht - es gibt keine Konfig. Wenn ich die Tests mit dem Resharper Test Runner durchführe, bestehen sie auch (aber andere Tests scheitern). Der TFS-Build-Server führt den MSTest-Runner aus, daher muss ich ihn mit MSTest arbeiten lassen.

Weiß jemand, wie ich das lösen kann?

+0

Versuchen Sie, Beispielprojekte von log4net zu untersuchen –

+2

Löschen Sie den Verweis auf log4net und fügen Sie einen neuen Verweis auf die richtige Version von log4net hinzu, oder ändern Sie die Eigenschaft "Specific Version" des Verweises auf false. –

+0

Das war eines der ersten Dinge, die ich ausprobiert habe. Ich habe es mit 1.2.13.0, 1.2.12.0 und mit dem log4net 1.2.13.0 mit der alten Signatur versucht. Die Eigenschaft Spezifische Version ist auf falsch festgelegt. – tobre

Antwort

10

Der Schuldige wurde gefunden. Wie ich vermutete, referenzierte eine abhängige Assembly log4net 1.2.12.0. Das Werkzeug, um herauszufinden, war dotPeek. Zum Glück haben wir den Quellcode für die abhängige Assembly und wir können ihn ändern, um auf das neueste log4net zu verweisen. Dies löst dieses Problem.

Wenn jemand ein ähnliches Problem hat, verwenden Sie dotPeek oder ein ähnliches Werkzeug, um die abhängigen Assemblies durchzugehen, um herauszufinden, auf welche Versionen von Assemblys es verweist.

Verwandte Themen