Datei oder Assembly 'Newtonsoft.Json' oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Die Manifestdefinition stimmt nicht mit der Assemblyreferenz überein


216

Dinge, die ich nach der Suche versucht habe:

  1. in Web.Config eine Bindung an die alte Version setzen:

    <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.1.0" />
    </dependentAssembly>
  2. Bearbeiten Sie meine .csproj-Datei, um sicherzustellen, dass nur eine Newtonsoft-Referenz vorhanden ist

    <Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
       <HintPath>..\packages\Newtonsoft.Json.6.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
       <SpecificVersion>False</SpecificVersion>
       <Private>True</Private>
    </Reference>
  3. Durchsuche meinen Computer nach jeder Newtonsoft.Json.dll und lösche jede Nicht-6.0.1-Version und lösche den Inhalt meines temporären Ordners

  4. Reparieren / installieren Sie das Paket in der Nuget Manager-Konsole neu

Das Erstellen ist erfolgreich, es wird jedoch der Fehler angezeigt, wenn Sie zur Site gehen.

BEARBEITEN

ok, also habe ich versucht, wie jedes Nuget-Paket neu zu installieren, und es scheint die 4.5-Version der newtonsoft.json.dll wieder hinzugefügt zu haben, aber ich erhalte den gleichen Fehler. Die Zielvorgabe meines Projekts ist .NET 4.5.1. Hier ist die Stapelverfolgung, die ich jetzt erhalte:

Serverfehler in '/' Anwendung.

Datei oder Assembly Newtonsoft.Jsonoder eine ihrer Abhängigkeiten konnte nicht geladen werden . Die Manifestdefinition der gefundenen Assembly stimmt nicht mit der Assemblyreferenz überein. (Ausnahme von HRESULT: 0x80131040)

Beschreibung: Während der Ausführung der aktuellen Webanforderung ist eine nicht behandelte Ausnahme aufgetreten. Bitte überprüfen Sie die Stapelverfolgung, um weitere Informationen über den Fehler und dessen Ursprung im Code zu erhalten.

Ausnahmedetails :: System.IO.FileLoadExceptionDatei oder Assembly Newtonsoft.Jsonoder eine ihrer Abhängigkeiten konnte nicht geladen werden . Die Manifestdefinition der gefundenen Assembly stimmt nicht mit der Assemblyreferenz überein. (Ausnahme von HRESULT: 0x80131040)

Quellfehler:

Während der Ausführung der aktuellen Webanforderung wurde eine nicht behandelte Ausnahme generiert. Informationen zum Ursprung und Ort der Ausnahme können mithilfe der folgenden Ausnahmestapelverfolgung identifiziert werden.

Trace zum Laden von Baugruppen: Die folgenden Informationen können hilfreich sein, um festzustellen, warum die Baugruppe Newtonsoft.Jsonnicht geladen werden konnte.

=== Pre-bind state information ===
LOG: DisplayName = Newtonsoft.Json
(Partial)
WRN: Partial binding information was supplied for an assembly:
WRN: Assembly Name: Newtonsoft.Json | Domain ID: 2
WRN: A partial bind occurs when only part of the assembly display name is provided.
WRN: This might result in the binder loading an incorrect assembly.
WRN: It is recommended to provide a fully specified textual identity for the assembly,
WRN: that consists of the simple name, version, culture, and public key token.
WRN: See whitepaper http://go.microsoft.com/fwlink/?LinkId=109270 for more information and common solutions to this issue.
LOG: Appbase = file:///c:/users/user/documents/visual studio 2013/Projects/foo/bar/
LOG: Initial PrivatePath = c:\users\user\documents\visual studio 2013\Projects\foo\bar\bin
Calling assembly : (Unknown).
 ===
LOG: This bind starts in default load context.
LOG: Using application configuration file: c:\users\user\documents\visual studio 2013\Projects\foo\bar\web.config
LOG: Using host configuration file: C:\Users\user\Documents\IISExpress\config\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///c:/users/user/documents/visual studio 2013/Projects/foo/bar/bin/Newtonsoft.Json.DLL.
LOG: Using application configuration file: c:\users\user\documents\visual studio 2013\Projects\foo\bar\web.config
LOG: Using host configuration file: C:\Users\user\Documents\IISExpress\config\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Redirect found in application configuration file: 4.5.0.0 redirected to 6.0.1.0.
LOG: Post-policy reference: Newtonsoft.Json, Version=6.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///c:/users/user/documents/visual studio 2013/Projects/foo/bar/bin/Newtonsoft.Json.DLL.
WRN: Comparing the assembly name resulted in the mismatch: Major Version
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.

Stapelverfolgung:

[FileLoadException: Could not load file or assembly 'Newtonsoft.Json' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]

[FileLoadException: Could not load file or assembly 'Newtonsoft.Json, Version=6.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
       System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
       System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +34
       System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +152
       System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +77
       System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +16
       System.Reflection.Assembly.Load(String assemblyString) +28
       System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +38

[ConfigurationErrorsException: Could not load file or assembly 'Newtonsoft.Json, Version=6.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
       System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +752
       System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +218
       System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +130
        System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +170
       System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +91
       System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +285
       System.Web.Compilation.BuildManager.ExecutePreAppStart() +153
       System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +516

[HttpException (0x80004005): Could not load file or assembly 'Newtonsoft.Json, Version=6.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
       System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9913572
       System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101
       System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18408

2
Ok, ich glaube, ich habe es jetzt zum Laufen gebracht. Ich habe jede Newtonsoft.Json.dll auf meinem Computer gelöscht, die nicht die neueste Version war, die ich finden konnte, habe sichergestellt, dass ich die neueste Version in NuGet habe, und sie erstellt und sichergestellt, dass es sich um die neueste Version im Ordner bin handelt Ich habe die Änderungen in der web.config und der .csproj belassen. Jetzt bin ich auf einen anderen Fehler, also muss es funktionieren ...
noobieDev

1
Fügen Sie die Antwort zu Ihrer Frage hinzu, damit die Leute sehen können, dass sie gelöst wurde? Und markieren Sie es als die Lösung
Per Hornshøj-Schierbeck

2
Ich habe noch heute (01.03.2016) eine Version dieses Problems mit Version 8.0.2. Es wird versucht, Version 6.0.0 zu laden. Keine Datei in meiner Lösung verweist auf 6.0.0. Es gibt keine Version 6.0.0. .dll überall in meinem Lösungsbereich. Ich habe viele Kopien der Datei newtonsoft.json.dll auf meinem Computer in verschiedenen Versionen. Sie werden von installierter Software von Drittanbietern verwendet, mit der ich mich nicht anlegen möchte. Abgesehen vom Entfernen all dieser Kopien habe ich jede in diesem gesamten Thread erwähnte Lösung ausprobiert, und nichts hat funktioniert.
Shavais

1
Ich hatte auch diese Fehlermeldung von newtonsoft-json festgestellt, als ich einen Verweis auf ein Projekt auf ein anderes Projekt hinzufügte, aber .Net Framework in Projekten war unterschiedlich, nachdem dasselbe .Net Framework für beide Probleme behoben wurde. Aber ich konnte anstelle der Framework-Fehlermeldung nicht verstehen, warum ein Fehler im Zusammenhang mit Newton-JSON angezeigt wird.
Sameer

1
Installieren Sie in allen Ihren Projekten dieselbe Version von Newtonsoft.Json, auch wenn diese nicht verwendet werden.
rubStackOverflow

Antworten:


274

Um dies zu lösen, stellte ich sicher, dass alle meine Projekte dieselbe Version verwendeten, indem ich den folgenden Befehl ausführte und die Ergebnisse überprüfte:

update-package Newtonsoft.Json -reinstall

Und zuletzt habe ich Folgendes aus meiner web.config entfernt:

  <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>

Wenn Sie sicherstellen möchten, dass alle Ihre Newtonsoft.Json-Pakete dieselbe Version haben, können Sie die Version wie folgt angeben:

update-package Newtonsoft.Json -version 6.0.0 -reinstall

17
Nur den Befehl zum erneuten Installieren auszuführen, hat bei mir funktioniert. Ich musste web.config nicht ändern.
Keith

4
Ich musste nur das <dependentAssembly> -Tag hinzufügen, um diesen Fehler zu beseitigen.
Nicklas Møller Jepsen

3
Ich musste die -version angeben, aber das Flag -reinstall weglassen, damit es in meinem Fall funktioniert.
Anre

1
Ich verwende die aktuelle Version 9.0.1, aber es wurde der gleiche Fehler angezeigt. Ich habe dann die Version in der csproj-Datei überprüft und sie war 9.0.0.0. Ich habe sie zu meiner web.config hinzugefügt und das Problem wurde behoben. 1. Stellen Sie sicher, dass die Version in csproj mit der in web.config identisch ist. 2. Achten Sie auf die Versionsnummern. Wenn die aktuelle Version x.0.0.0 ist, kann x.0.1 lauten, x kann 6 oder 9 sein oder was auch immer .
Eugene

7
Beachten Sie, dass Sie zum Ausführen des Befehls in VS2017 unter Extras -> Nuget Package Manager -> Package Manager-Konsole
Rose

83

Ich verwende Newtonsoft.Json v6.0.3, aber das musste ich in meiner Web.config-Datei tun:

<dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="6.0.0.0" />
</dependentAssembly>

Beachten Sie, dass ich, obwohl ich 6.0.3 verwende, eingeben musste newVersion="6.0.0.0"

In meiner Datei packages.config habe ich:

<package id="Newtonsoft.Json" version="6.0.3" targetFramework="net45" />

1
Nur als Hinweis habe ich versucht, alles zu deinstallieren / entfernen / löschen, was ich finden konnte, was mit Newtonsoft.Json zu tun hatte, und dann Nuget verwendet, um es neu zu installieren, aber immer noch den obigen Fehler erhalten. Erst als ich die von mir erwähnten Änderungen vornahm, konnte ich es richtig zum Laufen bringen.
CraigV

Ich habe dieses Problem festgestellt und den Assembly Binding Log Viewer verwendet, um die Diagnose zu erleichtern. Der Assemblybinder meldet die Version 6.0.3 Newtonsoft.Json.dll als Version 6.0.0.0, sodass die Umleitung fehlschlagen würde, wenn ich sie als 6.0.3 konfiguriert hätte.
Jason Slocomb

Die Zeile "Notiz" hilft mir. Ich hatte anfangs 9.0.1.19813 als neue Version in der BindingRedirect, da dies in der DLL angegeben ist. Folgendes habe ich jetzt: <Reference Include = "Newtonsoft.Json, Version = 9.0.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed, processArchitecture = MSIL"> <SpecificVersion> False </ SpecificVersion> </ Reference> <dependentAssembly> <AssemblyIdentity Name = "Newtonsoft.Json" Culture = "Neutral" publicKeyToken = "30ad4fe6b2a6aeed" /> <bindingRedirect oldVersion = "0.0.0.0-9.0.0.0" newVersion = "9.0.0.0" /> </ dependAssembly>
Mark Seefeldt

62

Ich habe Folgendes versucht, nachdem ich bereits sichergestellt hatte, dass mein Computer an allen Standorten dieselbe Version hatte und meine Projekte alle auf denselben Referenzpfad zeigten. Ich hatte auch sichergestellt, dass die Bindung der alten Version ihre war und an die aktuelle Version der DLL gebunden war, die ich hatte.

Ich arbeite in einer Umgebung mit einem strengen Framework und das Framework-Team hat die Versionierung mit den verschiedenen DLLs oft gestört.

Ich habe dieses Problem behoben, indem ich die Paketmanager-Konsole in Visual Studio (2013) ausgeführt habe. Von dort aus habe ich folgenden Befehl ausgeführt:

update-package Newtonsoft.Json -reinstall

gefolgt von

update-package Newtonsoft.Json

Dies ging durch und aktualisierte alle meine Konfigurationsdateien und relevanten Projektdateien. Erzwingen Sie sie alle auf die gleiche Version der DLL. Das war ursprünglich Version 4.5, bevor es erneut aktualisiert wurde, um die neueste Version zu erhalten.


Es war das Update, das das Problem für mich behoben hat. Mein Projekt wurde auf Newtonsoft Version 7.0 aktualisiert.
id.ot

Hat für mich gearbeitet. Beachten Sie anschließend, dass Ihre Datei package.config und web.config übereinstimmende Versionen haben.
TheValyreanGroup

Arbeitete für mich, als ich über die NuGet Package Manager-Konsole fertig war, danke!
Kbdavis07

25

Ich hatte die gleiche Fehlermeldung und wie Sie bereits erwähnt haben, war dies darauf zurückzuführen, dass auf verschiedene Versionen der Newtonsoft.Json.dll verwiesen wurde.

Einige Projekte in meiner MVC-Lösung verwendeten das NuGet-Paket für Version 4 dieser DLL.

Ich habe dann ein NuGet-Paket hinzugefügt (in meinem Fall für Salesforce), das Newtonsoft.Json Version 6 als Abhängigkeit von einem der Projekte mit sich brachte. Das hat das Problem für mich ausgelöst.

Um die Dinge zu bereinigen, habe ich den Abschnitt Updates im NuGet Package Manager für die Lösung verwendet (aus dem Menü Extras oder mit der rechten Maustaste auf die Lösung), um das Json.Net-Paket in der gesamten Lösung zu aktualisieren, sodass es für alle Projekte dieselbe Version war.

Danach habe ich nur die App-Konfigurationsdateien überprüft, um sicherzustellen, dass alle verbindlichen Umleitungszeilen wie unten beschrieben zu meiner ausgewählten Version geleitet werden.

<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />

Was ist, wenn DLLs Abhängigkeiten für verschiedene Versionen von Newtonsoft.Json für dieselbe MVC-App haben? Hier stecke ich fest.
Jeremy Ray Brown

Verwenden Sie die Option Konsolidieren im NuGet-Paketmanager, um sicherzustellen, dass die Versionen nicht auseinander driften.
Niico

17

Ok, ich glaube, ich habe es jetzt zum Laufen gebracht. Ich habe jede Newtonsoft.Json.dll auf meinem Computer gelöscht, die nicht die neueste Version war, die ich finden konnte, habe sichergestellt, dass ich die neueste Version in NuGet habe, und sie erstellt und sichergestellt, dass es sich um die neueste Version im Ordner bin handelt Ich habe die Änderungen in der web.config und der .csproj belassen. Jetzt bin ich bei einem anderen Fehler, also muss es funktionieren ..


2
Wie haben Sie alle Standorte auf Ihrem Computer gefunden?
Obaylis

Ich habe den Fehler auch erhalten, als ich das Projekt vom Team Foundation Server auf meinen PC gebracht habe. Ich füge einen Verweis auf newtonsoft zu meiner Lösung hinzu. Es hat nicht funktioniert. Dann installiere ich json.net (newtonsoft.json) über den Nuget Package Manager. Jetzt ist es so funktioniert gut.
Mohammad Sadiqur Rahman

Es befindet sich im Bin-Ordner. Dateiname - Newtonsoft.Json.dll Löschen Sie diese Datei und installieren Sie das Paket neu oder installieren Sie einfach die niedrigere Version und installieren Sie die richtige Version mit NuGet-Solution neu
maddy

7

Durch Auskommentieren dieses Teils auf meiner web.config wurde mein Problem gelöst:

<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>

Aber natürlich müssen Sie sicherstellen, dass Sie aktualisiert haben oder die richtige Version haben, indem Sie dies in Ihrer Paketmanager-Konsole tun:

update-package Newtonsoft.Json -reinstall

4

Ich habe die Schritte von Oleg ausprobiert und sie haben für meine gleiche Situation funktioniert.

Schritte:

  1. Führen Sie update-package Newtonsoft.Json -reinstallim Paket-Manager aus.

  2. Löschen Sie Ihre, binindem Sie die Anzeige der versteckten Dateien aktivieren und den binOrdner löschen .

  3. Schließen Sie Ihr Visual Studio und öffnen Sie es erneut.

  4. Führen Sie nun Ihr Projekt erneut aus. Ich glaube es sollte ok sein!


4

Sie können das Problem lösen, indem Sie die folgenden Zeilen in die Datei web.config einfügen.

 <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

3

In meinem Fall ging es nur um:

Tools -> NuGet Package Manager -> Package Manager Settings -> Clear Cache

Das Problem wurde verursacht, als ich einen TFS-Ordner neu zugeordnet habe.


3

Was mir tatsächlich geholfen hat, war, den Resharper-Build zu deaktivieren und die VisualStudio Re-Build-Option für mein Projekt zu verwenden.


Wie hast du das gemacht?
Naomi

1
In Resharper Optionen: Tools -> ReSharper Build -> Build Engine - wählen Sie "Visual Studio"
Shaulian

Ich habe vor einiger Zeit eine Testversion installiert (ungefähr einen Monat, glaube ich) und dann auch die Erweiterung deaktiviert. Ich sehe es nicht in Tools, also bin ich hoffentlich in Ordnung.
Naomi

3

von Tools >> NuGet Package Manager >> Paket für Lösungsupdate verwalten Newtonsoft.Json aller Lösungen auf die neueste Version


2

Wenn Sie mit einer Art Subversion arbeiten: Löschen Sie das Projekt und laden Sie es erneut herunter. Es hat bei mir funktioniert: S.


Weit

2

Ich hatte das gleiche Problem bei einem Testprojekt, das sich auf ein MVC 5-Projekt bezog. Dies geschah, nachdem ich mich mit einem MVC 5-Projekt zusammengeschlossen hatte. Ich habe das Problem behoben, indem ich Visual Studio 2012-Updates installiert habe, wie hier in Andres Antwort erläutert .

  • In Ihrem visuellen Studio gehen Sie zu
    1. Extras> Erweiterungen und Updates
    2. Wählen Sie "Updates" in der Akkordeonliste auf der linken Seite.
    3. Wählen Sie "Produktupdates".
    4. Update auf die neueste Version

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verlinkte Seite ändert
abarisone

Mein Problem wurde mit dieser Lösung behoben, danke! Ich hatte Version 8.0.1 installiert und es funktionierte nicht, bis ich auf VS2013 Update 5
Devin Prejean

2

Ich weiß nicht warum, aber in meinem Fall, selbst wenn ich den Ordner bin aus dem Projekt entferne, kopiere ich beim Erstellen eines Projekts die alte Version von newtonsoft.json, kopiere die DLL der neuen Version aus dem Paketordner und sie wird vorerst gelöst.


Ich hatte ein ähnliches Problem. In meiner Lösung habe ich ein Testprojekt. Das Testprojekt hat Version 9 in den Bin bekommen, aber das Projekt, das ich getestet habe, hatte Version 12. Ich habe die Version 12 aus dem Projekt im Bin-Ordner des Tests in den Bin-Ordner des Tests kopiert.
Josh Jay

2

In einigen Fällen, wenn Sie Ihre Binund ObjOrdner löschen, wird dieses Problem gelöst.


2

Also gut, ich denke, die Sache ist, meine Antwort hier zu dieser langen Liste hinzuzufügen, anstatt eine doppelte Frage zu erstellen ...

Wenn Sie dies 2019 mit .NET Core 3.0 (Vorschau zu diesem Zeitpunkt) erhalten, besteht die Lösung darin, sicherzustellen, dass alle Projekte auf dieselbe .NET Core-Version abzielen (in meinem Fall 3.0). Ich glaube, ich hatte ein Projekt in der Lösung für 2.1 und der Rest war 2.2, also hätte ich wahrscheinlich bei 2.2 bleiben können ...

Ich habe nicht einmal Newtonsoft.Json in einem der Projekte installiert, und das Hinzufügen zu ihnen hat das Problem natürlich nicht behoben.

Wenn Sie .NET Standard-Klassenbibliotheken oder w / e in Ihrer Lösung haben, müssen diese nicht auf derselben Version sein, obwohl sie wahrscheinlich die neueste sein sollten, die Sie verwenden können. Zum Beispiel sind meine .NET Standard-Klassenbibliotheken auf 2.2, da es noch keinen .NET Standard 3.0 gibt.


1

Keine der Antworten, einschließlich der überprüften, hat bei mir nicht funktioniert.

Die Lösung war viel einfacher. Ich habe zuerst die Referenzen aus meiner BUS-Ebene entfernt. Löschen Sie dann die DLLs aus dem Projekt (um sicherzustellen, dass sie nicht mehr vorhanden sind) und installieren Sie JSON.NET von Nuget Packeges neu. Und der schwierige Teil war, "es aus- und wieder einzuschalten".

Ich habe gerade Visual Studio neu gestartet und da hat es funktioniert!

Wenn Sie also alles Mögliche versuchen und das Problem immer noch nicht lösen können, versuchen Sie einfach, Visual Studio aus- und wieder einzuschalten. Dies kann hilfreich sein.


2
Ich denke, einfach war Sarkasmus.
Worthy7


1

Ich habe es behoben, indem ich die niedrigere Version von Newtonsoft.json.dll im Ordner bin entfernt und Newtonsoft.json.dll V6.0.0.0 hinzugefügt und die folgenden web.config-Elemente entfernt habe

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"/>
    <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="5.0.8"/>
</dependentAssembly>

1

Ich habe das gleiche Problem mit dem Dotnet-Kern und konnte es beheben, indem ich den NuGet-Cache geleert habe.

Öffnen Sie die Powershell und geben Sie den folgenden Befehl ein.

dotnet nuget locals all --clear

Dann habe ich Visual Studio geschlossen, es erneut geöffnet und den folgenden Befehl in die Package Manager-Konsole eingegeben:

Update-Package

NuGet sollte nun alle Pakete wiederherstellen und den Nuget-Cache erneut füllen.

Danach konnte ich mein Dotnet Core Webapi in einem Linux Container erstellen und starten.


1

Die Lösung, die mein Problem dafür gelöst hat, ist

gehe zu Referenzen-> klicke mit der rechten Maustaste auf Newtonsoft.json - gehe zu Eigenschaften und überprüfe die Version

Dieselbe Version sollte in sein

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-YourDllVersion" newVersion="YourDllVersion" />
</dependentAssembly>

0

Einfache Schritte. (1) Führen Sie "update-package Newtonsoft.Json -reinstall" im Paketmanager aus.

(2) Löschen Sie Ihren Bin, indem Sie das Anzeigen der versteckten Dateien aktivieren und den Bin-Ordner löschen.

(3) Schließen Sie Ihr Visual Studio und öffnen Sie es erneut.

(4) Führen Sie nun Ihr Projekt erneut aus. Ich glaube es sollte ok sein


0

Ich bin auf dieses Problem gestoßen, weil ich hatte: Projekt A (eine Desktop-EXE-Datei) bezieht sich auf Projekt B (eine tragbare DLL). A & B hatte verschiedene Versionen von JSON.Net und daher gab es einen Ladekonflikt. Nachdem ich alle Versionen von JSON.net gleich gemacht hatte, funktionierte es. (Dies ist in der Tat das, was einige der oben genannten Lösungen tun - ich rufe nur heraus, warum es funktioniert)


0

Ich hatte vor kurzem mit diesem und älteren Projekt zu kämpfen.

Ich habe es geschafft, das Problem aufzuspüren, nachdem ich überprüft hatte, welche Version der DLL sich tatsächlich im Ordner bin befand.

Ich hatte ein Post-Build-Skript, das abhängige Assemblys aus einem DLL-Bibliotheksordner in den Bin-Ordner kopierte. Ein gängiges Setup aus den Tagen vor Nuget.

Jedes Mal, wenn ich das Post-Build-Skript erstellte, wurde die richtige Version von Json.net durch die ältere ersetzt


0

Ich hatte genau das gleiche Problem und die Standardbibliothek von Visual Studio 13 war 4.5. Ich habe also zwei Lösungen. Eine davon ist, den Verweis darauf in der webconfig-Datei zu entfernen. Das ist ein letzter Ausweg und es funktioniert.

Die Fehlermeldung besagt, dass an dieser Stelle ein Problem vorliegt /Projects/foo/bar/bin/Newtonsoft.Json.DLL. wo die DLL ist! Eine grundlegende Eigenschaftsprüfung ergab, dass es sich um 4.5.0.0 oder ähnliches handelt, sodass ich die Webkonfiguration so geändert habe, dass sie auf 4.5 aussieht und 4.5 verwendet.


0

Keine dieser Optionen hat bei mir funktioniert, am Ende war es das;

Test> Testeinstellungen> * .testrunconfig

Ich musste eine neue Zeile hinzufügen

<DeploymentItem filename="packages\Newtonsoft.Json.4.5.8\lib\net40\Newtonsoft.Json.dll" />

Stellen Sie sicher, dass der Pfad und die Version für Ihr Setup korrekt sind.


0

Ich hatte das gleiche Problem. Ich habe ein Web-API-Projekt erstellt und es dann von .net 4.5.1 auf .net 4.6.1 aktualisiert. Das Schließen der IDE, das Stoppen von IIS und das Löschen von Inhalten von C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporäre ASP.NET-Dateien \ dir haben das Problem behoben.

HTH


0

Dieses Problem wurde für mich nicht durch Aktualisieren von NuGet-Paketen oder durch Ausführen einer "Bereinigung" des Projekts gelöst. Es wurde gelöst, indem der Ordner "obj" manuell gelöscht wurde.


0

Hier ist meine Lösung für dieses Problem. Stellen Sie sicher, dass die Versionsnummer in appconfig oder packageconfig mit der Referenzversion in Ihren Referenzen übereinstimmt. Siehe hier


0

In meinem Fall lautete die Fehlermeldung " Version 6.0.0 ", aber diese Version kann nicht installiert werden. Daher habe ich die " 6.0.1-Version " in meinem Projekt installiert und mein Problem gelöst.

install-package Newtonsoft.Json -Version 6.0.1 -Project MyProjectX
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.