351 Stimmen

Warnung: Konflikte zwischen verschiedenen Versionen derselben abhängigen Assembly gefunden

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

Das Problem ist, dass ich immer die folgende Warnung erhalte, wenn ich eine externe Komponente einbinde:

Es wurden Konflikte zwischen verschiedenen Versionen derselben abhängigen Assembly gefunden.

Was genau bedeutet diese Warnung und gibt es vielleicht eine Möglichkeit, diese Warnung auszuschließen (zum Beispiel durch Verwendung von #pragma disable in den Quellcodedateien)?

9voto

MoMo Punkte 8119

Ich hatte gerade diese Warnmeldung und habe die Lösung bereinigt und neu kompiliert (Build -> Lösung bereinigen) und sie ist verschwunden.

11 Stimmen

Nur bis Sie die Lösung wieder aufbauen.

0 Stimmen

Dies rettet mich! Ich habe seit gestern andere Lösungen ausprobiert, aber diese hier hat mein Problem gelöst. Einschließlich des Kommentars über diesem^. Vielen Dank!

6voto

Phil50 Punkte 71

Ich hatte das gleiche Problem und habe es gelöst, indem ich folgendes in der web.config geändert habe.

Es ist mir passiert, weil ich die Anwendung mit Newtonsoft.Json 4.0 ausgeführt habe.

Von:

Zu:

0 Stimmen

Dies war die Lösung für mich. Ich hatte eine Bindungsweiterleitung zur höheren Version, und es hat nur funktioniert, als ich zur niedrigeren Version gewechselt habe.

1 Stimmen

Warum? Für mich so seltsam. Ich benutze EF nicht, aber ich dachte, wir wollen immer zur letzten Version wechseln?

1 Stimmen

@HoàngLong, weil die Version, auf die du verweist, die ältere Version ist, aber die Version, die du einbindest, die neuere ist.

3voto

Bill Punkte 2356

Ich habe einen anderen Weg, dies zu tun, wenn Sie Nuget verwenden, um Ihre Abhängigkeiten zu verwalten. Ich habe festgestellt, dass sich manchmal VS und Nuget nicht abgleichen und Nuget nicht erkennen kann, dass Ihre Projekte nicht synchron sind. Die packages.config wird etwas anderes anzeigen, aber der Pfad in "Verweise - Eigenschaften" wird etwas anderes anzeigen.

Wenn Sie bereit sind, Ihre Abhängigkeiten zu aktualisieren, führen Sie folgende Schritte aus:

  1. Klicken Sie im Solution Explorer mit der rechten Maustaste auf das Projekt und klicken Sie auf 'Nuget-Pakete verwalten'

  2. Wählen Sie im linken Bereich die Registerkarte 'Installierte Pakete' aus und notieren Sie Ihre installierten Pakete. Möglicherweise möchten Sie Ihre packages.config zuerst auf Ihren Desktop kopieren, um sie mit Google abzugleichen und zu sehen, welche Nuget-Pakete installiert sind.

  3. Deinstallieren Sie Ihre Pakete. Das ist in Ordnung, wir werden sie gleich wieder hinzufügen.

  4. Installieren Sie sofort die Pakete, die Sie benötigen. Nuget wird Ihnen nicht nur die neueste Version besorgen, sondern auch Ihre Verweise ändern und die Bindungsweiterleitungen für Sie hinzufügen.

  5. Führen Sie dies für alle Ihre Projekte durch.

  6. Führen Sie auf Lösungsebene eine Bereinigung und Neuerstellung durch.

Sie können mit den unteren Projekten beginnen und sich bis zu den höheren Projekten vorarbeiten und jedes Projekt beim Fortfahren neu erstellen.

Wenn Sie Ihre Abhängigkeiten nicht aktualisieren möchten, können Sie die Paket-Manager-Konsole verwenden und die Syntax Update-Package -ProjectName [IhrProjektname] [Paketname] -Version [Versionsnummer] verwenden.

2voto

Jon Limjap Punkte 92084

Dies hängt tatsächlich von Ihrem externen Komponenten 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 externe Komponente, auf die eines Ihrer Projekte verweist, den gleichen Namen hat, aber eine andere Version als eine solche Komponente in einer anderen Assembly.

Dies passiert manchmal, wenn Sie "Durchsuchen" verwenden, um Referenzen zu finden und die falsche Version der Assembly hinzuzufügen, oder wenn Sie eine andere Version der Komponente in Ihrem Coderepository haben als die, die Sie auf dem lokalen Rechner installiert haben.

Versuchen Sie herauszufinden, welche Projekte diese Konflikte haben, entfernen Sie die Komponenten aus der Referenzliste und fügen Sie sie dann erneut hinzu, wobei Sie darauf achten, dass Sie auf die gleiche Datei verweisen.

2voto

newprint Punkte 6552

Ich habe gerade einige Zeit damit verbracht, das gleiche Problem zu debuggen. Beachten Sie, dass das Problem möglicherweise nicht zwischen verschiedenen Projekten liegt, sondern tatsächlich zwischen mehreren Verweisen in einem Projekt, die von verschiedenen Versionen derselben dll/Assembly abhängen. In meinem Fall war das Problem ein Versionskonflikt des Verweises FastMember.dll, der aus zwei verschiedenen NuGet-Paketen in einem einzelnen Projekt stammt. Als mir ein Projekt gegeben wurde, konnte es nicht kompiliert werden, weil die NuGet-Pakete fehlten und VS sich weigerte, die fehlenden Pakete wiederherzustellen. Über das NuGet-Menü habe ich alle NuGets manuell auf die neueste Version aktualisiert, und genau dann erschien die Warnung.

In Visual Studio Tools > Options > Build und Run > MSBuild-Projektbuild-Ausführlichkeit: (auf) Diagnose. Suchen Sie nach der Zeile(n) There was a conflict between im Output-Fenster. Hier ist der Teil des Outputs, den ich erhalten habe:

1>  There was a conflict between "FastMember, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null" and "FastMember, Version=1.3.0.0, Culture=neutral, PublicKeyToken=null". (TaskId:19)
1>      "FastMember, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null" wurde gewählt, weil es primär war, und "FastMember, Version=1.3.0.0, Culture=neutral, PublicKeyToken=null" nicht. (TaskId:19)
1>      Verweise, die von "FastMember, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null" abhängen  [C:\Users\ksd3jvp\Source\Temp\AITool\Misra\AMSAITool\packages\FastMember.1.5.0\lib\net461\FastMember.dll]. (TaskId:19)
1>          C:\Users\ksd3jvp\Source\Temp\AITool\Misra\AMSAITool\packages\FastMember.1.5.0\lib\net461\FastMember.dll (TaskId:19)
1>            Projektdatei-Elemente einschließen, die den Verweis "C:\Users\ksd3jvp\Source\Temp\AITool\Misra\AMSAITool\packages\FastMember.1.5.0\lib\net461\FastMember.dll" verursachen. (TaskId:19)
1>              FastMember, Version=1.5.0.0, Culture=neutral, processorArchitecture=MSIL (TaskId:19)
1>      Verweise, die von "FastMember, Version=1.3.0.0, Culture=neutral, PublicKeyToken=null" abhängen []. (TaskId:19)
1>          C:\Users\ksd3jvp\Source\Temp\AITool\Misra\AMSAITool\packages\ClosedXML.0.94.2\lib\net46\ClosedXML.dll (TaskId:19)
1>            Projektdatei-Elemente einschließen, die den Verweis "C:\Users\ksd3jvp\Source\Temp\AITool\Misra\AMSAITool\packages\ClosedXML.0.94.2\lib\net46\ClosedXML.dll" verursachen. (TaskId:19)
1>              ClosedXML, Version=0.94.2.0, Culture=neutral, processorArchitecture=MSIL (TaskId:19)

Beachten Sie, dass Projektdatei-Elemente einschließen, die den Verweis "C:\Users\ksd3jvp\Source\Temp\AITool\Misra\AMSAITool\packages\ClosedXML.0.94.2\lib\net46\ClosedXML.dll" verursachen

ClosedXML.dll stammt aus dem NuGet ClosedXML und hängt von FastMember.dll 1.3.0.0 ab. Darüber hinaus gibt es auch das NuGet FastMember im Projekt, und es hat FastMember.dll 1.5.0.0. Konflikt !

Ich habe die NuGets ClosedXML & FastMember deinstalliert, weil ich eine Bindungsweiterleitung hatte, und nur die neueste Version von ClosedXML installiert. Das hat das Problem behoben !

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