Auflösen von MSB3247 - Gefundene Konflikte zwischen verschiedenen Versionen derselben abhängigen Assembly
Ein .NET 3.5 Lösung endete mit dieser Warnung beim kompilieren mit msbuild.
Manchmal NDepend könnte helfen, aber in diesem Fall es nicht geben keine weiteren details. Wie Bob Ich landete mit zu greifen, um die Eröffnung der einzelnen Baugruppe in ILDASM, bis ich einen gefunden, der wurde mit Bezug auf eine ältere version der abhängigen assembly.
Ich habe versucht, mithilfe von MSBUILD von VS 2010 Beta 2 (wie der Connect-Artikel angegeben, dies wurde behoben in der nächsten version der CLR) aber das hat nicht bieten mehr Details entweder (vielleicht behoben post Beta 2)
Gibt es eine bessere (automatisierten) Ansatz?
Kommentar zu dem Problem
In meinem Fall musste ich nur sicherstellen, dass alle Projekte in der Projektmappe ausgeführt wurden, die gleiche version von nuget-Paketen (können einfach auf alles aktualisieren, um die neuesten).
Siehe auch stackoverflow.com/questions/24772053/...
InformationsquelleAutor der Frage David Gardiner | 2009-12-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ändern Sie die "MSBuild project build output verbosity" zu "Detailliert" oder höher. Um dies zu tun, gehen Sie folgendermaßen vor:
Extras/Optionen Seite, die angezeigt wird, legen Sie die MSBuild project build output verbosity Ebene, um die entsprechende Einstellung, je nach version:
Check-out MSBuild-Nachrichten. Die
ResolveAssemblyReferences
Aufgabe, das ist die Aufgabe, aus dem MSB3247 stammt, sollte Hilfe beim Debuggen dieses Problems.Meinem konkreten Fall war ein falscher Verweis auf SqlServerCe. Siehe unten. Ich hatte zwei Projekte verweisen auf zwei verschiedene Versionen von SqlServerCe. Ich ging an das Projekt mit der älteren version, den Verweis entfernt, dann die richtige Referenz.
Sie nicht haben, um öffnen Sie jedes der Montage zu ermitteln, welche Versionen der referenzierten assemblies.
InformationsquelleAutor der Antwort AMissico
Mike Hadlow hat geschrieben ein kleines console-app namens AsmSpy , sehr schön Listen jede assembly-Referenzen:
Dies ist eine viel schnellere Weg, um auf den Grund der Warnung MSB3247, als angewiesen auf die MSBuild-Ausgabe.
InformationsquelleAutor der Antwort Noel Abrahams
Fand ich, dass (zumindest in Visual Studio 2010), die Sie benötigen, um die Ausgabe Ausführlichkeit zumindest Detailliert sein, um in der Lage sein, das problem.
Könnte es sein, dass mein problem war ein Hinweis, dass zuvor eine GAC verweisen, das aber nicht mehr der Fall, nachdem meine Maschine neu installieren.
InformationsquelleAutor der Antwort ErikHeemskerk
Irgendwann @AMissico Antwort ist nicht genug. In meinem Fall konnte ich nicht finden, den Fehler in den Output-Fenstern, so dass ich beschloss, eine Protokolldatei zu erstellen und zu analysieren, indem Sie die folgenden Schritte aus:
Speichern der build-log in eine Datei... https://msdn.microsoft.com/en-us/library/ms171470.aspx
msbuild MyProject.proj /fl /flp:logfile=MyProjectOutput.log;verbosity=detailed
Finden Sie den text:
warning MS...
oder der bestimmten Warnung, info: (z.B. Linie 9293)Found conflicts between different versions...
und die volle detail der Konflikt, wird über der Nachricht (z.B. Linie 9277)There was a conflicts between...
Visual Studio 2013
InformationsquelleAutor der Antwort Jaider
Diese Warnung generiert, für Standard ASP.NET MVC 4 beta
siehe hier
InformationsquelleAutor der Antwort RouR
Verwenden eine Abhängigkeit reader
Mit dep.exe können Sie eine Liste aus allen verschachtelten Abhängigkeiten eines ganzen Ordners.
Kombiniert mit unix-tools wie grep oder awk, kann es Ihnen helfen, Ihr problem zu lösen
Suche nach Assemblys verwiesen wird, in mehr als einer version
Diese obskure Befehlszeile ausgeführt wird dep.exe dann leitet die Ausgabe doppelt zu awk zu
Verstehen, wie diese Montage gezogen habe, in Ihr bin
In diesem Beispiel würde das tool Ihnen zeigen, dass System.Web.Http 5.2.3 stammt aus Ihrer Abhängigkeit zu FooLib in der Erwägung, dass die version 4.0.0 kommt aus BarLib.
Dann haben Sie die Wahl zwischen
, Wie diese Sache in Windows
Wenn Sie nicht über eine unix-shell müssen Sie eine Datei herunterladen, bevor Sie in der Lage zu laufen
awk
undgrep
. Versuchen Sie, eine der folgendenInformationsquelleAutor der Antwort Manitra Andriamitondra
Ich hatte auch dieses problem und verwendet AMissico Rat zu entdecken, der das problem (Obwohl musste Ausführlichkeit zu Detailliert.
Das problem war eigentlich Recht straight forward, obwohl nach der Feststellung der Täter.
Hintergrund:
Ich habe ein Upgrade mein Projekt von VS2008, VS2010. In VS2008 das Ziel-framework 3.5 und wenn ich brachte es in VS2010 schaltete ich es auf 4 (Full). Ich ebenfalls aktualisiert einige Komponenten von Drittanbietern, wie z.B. Crystal reports.
Es stellte sich heraus, die meisten von System-Referenzen, in denen deutete auf version 4.0.0.0, aber ein paar waren nicht automatisch geändert (System und System.Web.Dienstleistungen) und waren noch auf der Suche auf 2.0.0.0. Crystal reports verweisen auf 4.0.0.0 und das war also, wo die Konflikte auftreten. Einfach setzen Sie den cursor an die erste System-Bibliothek im Projektmappen-explorer mit der cursor unten in der Liste und suchen Sie alle Verweise auf 2.0.0.0, das entfernen und neu-hinzufügen neuer 4.0.0.0 version hat den trick.
Das seltsame dabei war, dass die meisten der Referenzen hatte wurde korrekt aktualisiert, und wenn es nicht für Crystal-Reports-Berichte, wäre ich wohl nie bemerkt hatte...
InformationsquelleAutor der Antwort Hamiora
Ich hatte den selben Fehler und konnte es nicht herausfinden mit den anderen Antworten. Ich fand, dass wir "Konsolidieren" NuGet-Pakete.
InformationsquelleAutor der Antwort Carol
etwas gefunden hier und es hat mir geholfen, einfach entfernen Sie die nicht verwendete Verweise und die Warnungen gehen.
InformationsquelleAutor der Antwort lex87
Machte ich eine Anwendung basierend auf Mike Hadlow Anwendung: AsmSpy.
Meine app ist eine WPF-Anwendung mit GUI und kann download von meinem home webserver: AsmSpyPlus.exe.
Code ist verfügbar unter: GitHub
InformationsquelleAutor der Antwort Eric Ouellet
ASP.NET build-manager ist der Aufbau der website, indem Sie durch die Ordner alphabetisch geordnet und für jeden Ordner, den Sie zahlen, es Abhängigkeiten und baut zunächst die Abhängigkeiten und dann die ausgewählten Ordner.
In diesem Fall den problematischen Ordner ist ~/Bedienelemente, ausgewählt zu werden, gebaut am Anfang, aus noch unbekannten Gründen, es baut einige der Steuerelemente, die es als separate assembly anstatt in der gleichen assembly wie die anderen Steuerelemente (scheint zu sein, verbunden mit der Tatsache, dass manche Kontrollen sind abhängig von anderen Steuerungen in den gleichen Ordner).
Dann den nächsten Ordner, die erstellt wurde (~/File-Center/Control) ist abhängig von der root-Ordner ~/die abhängig ist von der ~/Controls, also den Ordner ~/Controls gebaut wird, wieder nur dieses mal der Kontrollen, die getrennt waren, zu einer eigenen assembly sind jetzt Mitglied der gleichen assembly wie die anderen Steuerelemente mit der getrennten Montage noch verwiesen wird.
Also an dieser Stelle 2 Montage (mindestens) die gleichen Bedienelemente und der build fehlschlägt.
Obwohl wir wissen immer noch nicht, warum dies passiert ist, konnten wir es umgehen, durch ändern der Steuerelemente-Ordner-Namen ZControls, so ist es nicht gebaut, bevor ~/File-Center/- Steuerung, nur nach und so es gebaut ist, wie es sollte.
InformationsquelleAutor der Antwort Mike Yinger
Quick Fix:
Rechten Maustaste auf die Projektmappe -> NuGet-Pakete Verwalten für die Lösung -> Unter Konsolidieren können Sie sehen, wenn es um verschiedene Versionen des gleichen Pakets installiert wurden. Deinstallieren Sie verschiedene Versionen und installieren Sie die neueste.
InformationsquelleAutor der Antwort JerryGoyal
Ein einfachste Weg, ohne eine Berücksichtigung der (internen) Abhängigkeiten :
In meinem Fall gab es ein problem mit der MySQL-Referenz. Irgendwie könnte ich die Liste in drei Versionen es unter der Liste der verfügbaren Verweise. Ich folgte den Prozess 1 bis 6, oben, und es funktionierte für mich.
InformationsquelleAutor der Antwort Sukhi
Visual Studio für Mac-Community neben:
Als AMissico Antwort erfordert die änderung des log-Levels, und weder ASMSpy noch ASMSpyPlus sind verfügbar als cross-Plattform-Lösung ist, hier eine kurze Ergänzung für Visual Studio für Mac:
Es ist in Visual Studio Community → Einstellungen... → Projekte → Build-Log → Ausführlichkeit
InformationsquelleAutor der Antwort SwiftArchitect