Ich habe in VS 2013 (Update 1) ein neues ASP.NET MVC 5-Webprojekt erstellt und dann alle NuGet-Pakete aktualisiert. Wenn ich das Projekt erstelle, wird folgende Warnung angezeigt:
Warnung MSB3243: Konflikt zwischen "Newtonsoft.Json, Version = 6.0.0.0, Kultur = neutral, PublicKeyToken = 30ad4fe6b2a6aeed" und "Newtonsoft.Json, Version = 4.5.0.0, Kultur = neutral, PublicKeyToken = 30ad4fe6b2a6aeed" kann nicht gelöst werden.
Wenn ich jedoch die web.config überprüfe, sehe ich, dass eine Bindungsumleitung vorhanden ist:
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
</dependentAssembly>
Welches ist genau das, was die Warnung rät.
Wie kann ich diese Warnung beheben?
Antworten:
Hier die Schritte, mit denen ich die Warnung behoben habe:
quelle
install.ps1
Ich hatte dieses Problem, weil ich Pakete aktualisiert habe, einschließlich Microsoft.AspNet.WebApi, das einen Verweis auf Newtonsoft.Json 4.5.6 enthält, und ich hatte bereits Version 6 installiert. Es war nicht klug genug, die Version 6 zu verwenden.
Um das Problem zu beheben, habe ich nach dem WebApi-Update die Tools> NuGet Package Manager> Pacakge Manager Console geöffnet und Folgendes ausgeführt:
Das Protokoll zeigte, dass die Versionen 6.0.x und 4.5.6 alle auf die neueste Version aktualisiert wurden und alles in Ordnung war.
Ich habe das Gefühl, dass dies wieder auftauchen wird.
quelle
Ich habe festgestellt, dass das Löschen dieses Abschnitts aus der Projektdatei das Problem behebt.
quelle
Wenn keines der oben genannten Verfahren funktioniert, versuchen Sie es in web.config oder app.config:
quelle
Ich habe ein Upgrade von Newtonsoft.Json 11.0.1 auf 12.0.2 durchgeführt. Beim Öffnen der Projektdatei in Notepad ++ habe ich beides entdeckt
und
Ich habe die ItemGroup gelöscht, die die Referenz mit dem Hinweispfad zu Version 11.0.1 umschließt.
Diese Probleme können wahnsinnig frustrierend sein. Darüber hinaus folgen Entwickler häufig den gleichen Schritten wie bei früheren Projekteinstellungen. Bei den vorherigen Setups ist das Problem nicht aufgetreten. Aus irgendeinem Grund wird die Projektdatei gelegentlich falsch aktualisiert.
Ich wünschte verzweifelt, Microsoft würde diese Probleme mit der Hölle der Visual Studio-DLLs beheben. Es kommt viel zu oft vor und führt dazu, dass der Fortschritt zum Stillstand kommt, bis er behoben ist, oft durch Ausprobieren.
quelle
Die endgültige Lösung für Ihre Assembly-Umleitungsfehler
Okay, hoffentlich sollte dies helfen, etwaige (vernünftige) Unstimmigkeiten bei Baugruppenreferenzen zu beheben ...
Jubeln.
quelle
Denken Sie daran, dass mit der Bindungsumleitung
Sie sagen, dass die alten Versionen der DLL zwischen Version 0.0.0.0 und Version 6.0.0.0 liegen.
quelle
oldVersion
ist hier eigentlich ein bisschen falsch, was Sie sagen ist, dass Ihre Assembly / Exe mit einem Verweis auf eine Version im Bereich erstellt wurde0.0.0.0-6.0.0.0
und dass die tatsächlich installierte (und bevorzugte) Version der Wert unter istnewVersion
(alte Version wäre besser formuliert als "erwartete Version" und neue Version würden besser als "tatsächlich verfügbare Version" formuliert)Niemand erwähnte Folgendes, was nach meinem Verständnis die richtige Lösung ist:
Gehen Sie zum csproj des Projekts, in dem das Nuget installiert ist, und setzen Sie das
AutoGEneratedBindingRedirects
auffalse
.<AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>
Vollständiger Artikel in MSDN.
quelle
Ich habe mein Paket aktualisiert und sogar neu installiert - aber ich habe immer noch genau den gleichen Fehler wie das erwähnte OP erhalten. Ich habe die referenzierte DLL manuell bearbeitet, indem ich Folgendes getan habe.
Ich habe die Datei newtonsoft.json.dll aus meiner Referenz entfernt und die DLL dann manuell aus der bin-Direktive gelöscht. Dann habe ich die Datei newtonsoft.json.dll manuell aus dem Nuget-Paketordner in den Projektbehälter kopiert und dann die Referenz hinzugefügt, indem ich zur DLL-Datei navigiert habe.
Jetzt baut sich mein Projekt wieder auf.
quelle
Ich hatte ein ähnliches Problem und wollte nur eine Antwort für andere in meiner Situation veröffentlichen.
Ich habe eine Lösung, die eine ASP.NET-Webanwendung mit mehreren anderen lib-Projekten der C # -Klasse ausführt.
Meine ASP.NET-Webanwendung verwendete nicht json, sondern andere Projekte, in denen.
So habe ich es behoben:
Schritt 2 bestand zunächst darin, Konfigurationsinformationen für json hinzuzufügen, die darauf hindeuten, dass alle Projekte unabhängig von ihrer Version die neueste Version (6) verwenden. Das Hinzufügen der Assemblybindung zu Web.Config ist höchstwahrscheinlich das Update.
In Schritt 2 wurde jedoch auch ein älterer Code bereinigt. Es stellte sich heraus, dass wir zuvor eine alte Version (5) von json in unserer Webanwendung verwendet haben und die NuGet-Ordner nicht gelöscht wurden, als die Referenz (ich vermute: manuell) entfernt wurde. Durch Hinzufügen des neuesten json (6) wurden die alten Ordner entfernt (json v5). Dies könnte auch Teil des Fixes sein.
quelle
Veverke erwähnte, dass es möglich ist, die Generierung von Bindungsumleitungen zu deaktivieren, indem AutoGEneratedBindingRedirects auf false gesetzt wird. Ich bin mir nicht sicher, ob es eine neue Sache ist, seit diese Frage veröffentlicht wurde, aber es gibt eine Option "Überspringen von Bindungsumleitungen überspringen" in Tools / Optionen / Nuget Packet Manager, die umgeschaltet werden kann. Standardmäßig ist es deaktiviert, was bedeutet, dass die Weiterleitungen angewendet werden. In diesem Fall müssen Sie jedoch alle erforderlichen Bindungsumleitungen manuell verwalten.
quelle