[Asp.net-mvc] Wie kann ich nach der Aktualisierung von NuGet-Paketverweisen in einem neuen ASP.NET MVC 5-Projekt Konflikte mit der Assemblyversion mit JSON.NET beheben?


Answers

Ich hatte dieses Problem, weil ich Pakete aktualisiert habe, die Microsoft.AspNet.WebApi enthielten, das einen Verweis auf Newtonsoft.Json 4.5.6 hat und ich bereits Version 6 installiert hatte. Es war nicht klug genug, die Version 6 zu verwenden.

Um es zu lösen, habe ich nach dem WebApi-Update den Befehl Extras> NuGet-Paket-Manager> Pacakge Manager-Konsole geöffnet und ausgeführt:

 Update-Package Newtonsoft.Json

Das Protokoll zeigte, dass die Versionen 6.0.x und 4.5.6 alle auf den neuesten Stand gebracht wurden und alles in Ordnung war.

Ich habe das Gefühl, das wird wieder aufkommen.

Question

Ich habe ein neues ASP.NET MVC 5-Webprojekt in VS 2013 (Update 1) erstellt und anschließend alle NuGet-Pakete aktualisiert. Wenn ich das Projekt erstelle, erhalte ich folgende Warnung:

warning MSB3243: Es konnte keine Konfliktlösung zwischen "Newtonsoft.Json, Version = 6.0.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed" und "Newtonsoft.Json, Version = 4.5.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed" gefunden werden.

Wenn ich jedoch die web.config überprüfe, sehe ich, dass eine verbindliche Umleitung 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?




Wenn keiner der oben genannten Schritte funktioniert, versuchen Sie, dies in web.config oder app.config zu verwenden:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <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>
    </assemblyBinding>
</runtime>



Ich habe mein Paket aktualisiert und es sogar neu installiert - aber ich bekam immer noch genau den gleichen Fehler wie das erwähnte OP. Ich habe die referenzierte DLL manuell bearbeitet, indem ich Folgendes getan habe.

Ich entfernte die Newtonsoft.json.dll aus meiner Referenz und löschte dann manuell die .dll aus dem Bin-Verzeichnis. Dann habe ich manuell die newtonsoft.json.dll aus dem nugget-Paketordner in die Projektablage kopiert und dann die Referenz hinzugefügt, indem ich zur .dll-Datei navigierte.

Jetzt baut mein Projekt wieder auf.




Denken Sie daran, dass mit der verbindlichen Umleitung

alteVersion = "0.0.0.0-6.0.0.0"

Sie sagen, dass die alten Versionen der DLL zwischen Version 0.0.0.0 und Version 6.0.0.0 sind.