Ich habe die letzten 2 Stunden damit verbracht, über diese Probleme auf SO zu schauen, und nichts scheint zu funktionieren.Ein weiteres Problem über log4net 1.2.11 Konflikte
Ich habe eine Lösung, die log4net 1.2.11 verwendet, über NuGet. Es funktioniert gut auf meiner 32-Bit-Entwicklungs-Workstation mit Windows 7. Es läuft nicht auf meinem 64-Bit Windows 2008 R2-Testsystem. Der Fehler, den ich bekommen ist:
Unbehandelte Ausnahme: System.IO.FileLoadException: Konnte Datei oder Assembly 'log4net, Version = 1.2.11.0, Culture = neutral, PublicKeyToken = 669e0ddf0bb1aa2a' oder eine ihrer Abhängigkeiten laden. Die Manifestdefinition der lokalisierten Assembly stimmt nicht mit der Assemblyreferenz überein.
Ich suche im Anwendungsverzeichnis auf meinem Testsystem. Die log4net.dll
Datei dort ist Version 1.2.11.
Die Version in der GAC war Version 1.2.10. Ich habe es entfernt. Es gab eine Version auf meinem Entwicklungsserver, die wieder etwas anderes war; Ich habe das auch entfernt. Ich habe umgebaut; Ich habe mich umgezogen. Ich habe hinzugefügt
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="669E0DDF0BB1AA2A" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-1.2.10.0" newVersion="1.2.11.0"/>
</dependentAssembly>
in meine Konfigurationsdatei. Nichts scheint einen Unterschied zu machen. Mein Bereitstellungsprojekt zeigt die richtige Version und Signatur der bereitgestellten log4net-Assembly an.
Ich weiß nicht, was ich noch tun kann, aber ich bin ziemlich frustriert, dass eine Protokollierungsbibliothek verhindert, dass meine Anwendung ausgeführt wird.
Was habe ich verpasst?
Ich musste das Gleiche tun. Das Problem liegt vor, wenn Abhängigkeiten in Konflikt stehende Versionen von log4net erfordern. –
Siehe @ keithl8041's Antwort für eine tatsächliche Lösung für dieses Problem, anstatt ein Problem zu umgehen. :) –
@JohnySkovdal, eigentlich würde ich das auch als Workaround bezeichnen. Das bedeutet, dass Sie weiterhin eine veraltete Bibliothek und einen alten Bibliotheksschlüssel mit einem eindeutigen EOL verwenden müssen. Das begrenzt Ihre Möglichkeiten in der Zukunft. –