[.net] Warnung: Es wurden Konflikte zwischen verschiedenen Versionen derselben abhängigen Assembly gefunden


Answers

Im Grunde geschieht dies, wenn die Assembly, auf die Sie verweisen, "Copy Local" auf "True" gesetzt hat, was bedeutet, dass eine Kopie der DLL zusammen mit Ihrer Exe im Ordner bin abgelegt wird.

Da Visual Studio alle Abhängigkeiten einer referenzierten Assembly ebenfalls kopiert, ist es möglich, dass zwei verschiedene Builds derselben Assembly, auf die verwiesen wird, angezeigt werden. Dies ist eher der Fall, wenn sich Ihre Projekte in separaten Lösungen befinden und daher separat kompiliert werden können.

Die Art und Weise, wie ich es geschafft habe, besteht darin, für Referenzen in Assembly-Projekten "Copy Local" auf "False" zu setzen. Führen Sie dies nur für ausführbare Dateien / Webanwendungen aus, für die Sie die Assembly für das fertige Produkt benötigen.

Hoffnung, die Sinn macht!

Question

Ich entwickle gerade eine .NET-Anwendung, die aus 20 Projekten besteht. Einige dieser Projekte werden mit .NET 3.5 kompiliert, andere sind noch .NET 2.0-Projekte (bisher kein Problem).

Das Problem ist, dass ich immer die folgende Warnung bekomme, wenn ich eine externe Komponente einschließe:

"Found conflicts between different versions of the same dependent assembly".

Was genau bedeutet diese Warnung und gibt es möglicherweise eine Möglichkeit, diese Warnung auszuschließen (wie die Verwendung von #pragma disable in den Quellcodedateien)?




Eine andere Sache zu prüfen und zu überprüfen ist, stellen Sie sicher, dass Sie keinen Dienst haben, der diesen bin-Ordner verwendet. Wenn das der Fall ist, stoppen Sie die Service- und Wiederherstellungslösung




Ich hatte das gleiche Problem mit einem meiner Projekte, jedoch half keines der oben genannten, um die Warnung zu lösen. Ich überprüfte das detaillierte Build-Logfile, ich verwendete AsmSpy, um zu überprüfen, dass ich die korrekten Versionen für jedes Projekt in der betroffenen Lösung verwendete, ich überprüfte die tatsächlichen Einträge in jeder Projektdatei - nichts half.

Schließlich stellte sich heraus, dass das Problem eine verschachtelte Abhängigkeit von einer der Referenzen war, die ich in einem Projekt hatte. Dieser Verweis (A) wiederum erforderte eine andere Version von (B), die direkt von allen anderen Projekten in meiner Lösung referenziert wurde. Das Aktualisieren der Referenz in dem referenzierten Projekt hat es gelöst.

Solution A
+--Project A
   +--Reference A (version 1.1.0.0)
   +--Reference B
+--Project B
   +--Reference A (version 1.1.0.0)
   +--Reference B
   +--Reference C
+--Project C
   +--Reference X (this indirectly references Reference A, but with e.g. version 1.1.1.0)

Solution B
+--Project A
   +--Reference A (version 1.1.1.0)

Ich hoffe, das obige zeigt, was ich meine, brauchte ein paar Stunden, um es herauszufinden, also hoffentlich wird auch jemand anderes davon profitieren.




Wenn Sie in Visual Studio mit der rechten Maustaste auf die Lösung klicken und nugget-Pakete verwalten, wird das Register "Konsolidieren" angezeigt, in dem alle Pakete auf die gleiche Version gesetzt werden.




Das ist mir auch passiert. Eine DLL wurde zweimal referenziert: einmal direkt (in Referenzen) und einmal indirekt (referenziert von einem anderen referenzierten Projekt). Ich entfernte direkte Referenz, gereinigt und umgebaute Lösung. Problem gelöst.




Dies hängt tatsächlich von Ihrer externen Komponente ab. Wenn Sie eine externe Komponente in einer .NET-Anwendung referenzieren, wird eine GUID zur Identifizierung dieser Komponente generiert. Dieser Fehler tritt auf, wenn die von einem Ihrer Projekte referenzierte externe Komponente denselben Namen und eine andere Version als eine andere Komponente in einer anderen Assembly hat.

Dies passiert manchmal, wenn Sie "Durchsuchen" verwenden, um nach Verweisen zu suchen und die falsche Version der Assembly hinzuzufügen, oder Sie haben eine andere Version der Komponente in Ihrem Code-Repository als diejenige, die Sie auf dem lokalen Computer installiert haben.

Versuchen Sie herauszufinden, welche Projekte diese Konflikte aufweisen, entfernen Sie die Komponenten aus der Referenzliste, und fügen Sie sie erneut hinzu, und stellen Sie sicher, dass Sie auf dieselbe Datei verweisen.




=> überprüfe, dass eine Instanz der Anwendung teilweise installiert wird.

=> deinstallieren Sie zuerst diese Instanz von der Deinstallationsanwendung.

=> dann, bereinigen, neu erstellen und versuchen, zu implementieren.

Das hat mein Problem gelöst. Es hilft dir auch. Freundliche Grüße.




Related