42 Stimmen

Wie behebt man den Fehler "No way to resolve conflict between"?

Kürzlich hinzugefügt log4net.dll zu unserem Datenobjekt. Unser Datenobjekt baut perfekt, aber wenn Sie versuchen, etwas zu bauen, die unser Datenobjekt verweist, erhalten Sie den folgenden Fehler:

Keine Möglichkeit, den Konflikt zwischen "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" und "log4net, Version=1.2.9.0, Culture=neutral, PublicKeyToken=b32731d11ce58905" zu lösen. Beliebige Auswahl von "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304".

Ich habe Folgendes gefunden Gewinde die es mir ermöglichten, mehr Informationen über das Problem zu erhalten.

log4net wird in unserem Projekt für eine Vielzahl von Dingen verwendet. Zum Beispiel hat crystal 1.2.9 in das GAC installiert. Ich weiß, dass Infragictics 1.2.10 verwendet.

Wir haben ein spezielles Verzeichnis - nennen Sie es c:\references - in die wir alle unsere DLLs bauen und die alle unsere Anwendungen verwenden, um auf unsere internen DLLs zu verweisen. Ich habe also meine Referenz in unserem Datenobjekt speziell auf c: \references\log4net.dll die Version 1.2.11 ist. Was seltsam ist, weil in der Fehlermeldung oben nicht 1.2.11 angezeigt wird. Die DLL wird mit spezifischer Version referenziert: = True & Copy Local:= True. Ich habe das Build-Verzeichnis überprüft & 1.2.11 von log4net wurde korrekt verschoben.

Wenn es hilft, hier sind einige der detaillierten Fehlermeldungen:

There was a conflict between "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" and "log4net, Version=1.2.9.0, Culture=neutral, PublicKeyToken=b32731d11ce58905".
  No way to resolve conflict between "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" and "log4net, Version=1.2.9.0, Culture=neutral, PublicKeyToken=b32731d11ce58905". Choosing "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" arbitrarily.
      References which depend on "log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" [C:\Windows\assembly\GAC_32\log4net\1.2.10.0__692fbea5521e1304\log4net.dll].
          C:\Windows\assembly\GAC_MSIL\CrystalDecisions.Shared\13.0.2000.0__692fbea5521e1304\CrystalDecisions.Shared.dll

   References which depend on "log4net, Version=1.2.9.0, Culture=neutral, PublicKeyToken=b32731d11ce58905" [C:\Program Files (x86)\Business Objects\Common\4.0\managed\log4net.dll].          c:\references\DBObjectAdoNet.dll
            Project file item includes which caused reference "c:\references\DBObjectAdoNet.dll".

Update : Die einzige Möglichkeit, die ich bisher gefunden habe, um den Fehler zu beheben, besteht darin, log4net in allem zu referenzieren, was DBObjectAdoNet.dll referenziert. Das ist nicht wirklich eine brauchbare Lösung für uns, da fast alles in unserem gesamten System verwendet.

2. Aktualisierung : Ich habe versucht, log4net im GAC abzulegen, weil ich dachte, das würde das Problem beheben, aber es geht immer noch nicht.

3. Update : Ich habe einen Anruf beim Microsoft-Support getätigt. Sie wollen, dass ich Assembly.LoadFrom() verwende, was ich nur sehr, sehr zögerlich tue, da wir über 300.000 Aufrufe in einer Anwendung machen und für jeden Aufruf Reflection benötigen würden, was die Dinge ziemlich verlangsamen würde.

Ich fand heraus, wenn ich die Crystal-Laufzeit auf meinem Rechner deinstallieren der Fehler geht weg, die nicht viel Sinn macht, weil das einzige, was es tut, soweit ich sagen kann, ist entfernen log4net 1.2.10.0 aus dem GAC unter dem .NET Framework 2.0-Ordner, die nicht egal sein sollte, weil die app eine .NET Framework 4 app ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X