Dinge, die ich nach der Suche versucht habe:
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>
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>
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
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.Json
oder 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.FileLoadException
Datei oder AssemblyNewtonsoft.Json
oder 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.Json
nicht 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
quelle
Antworten:
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:
Und zuletzt habe ich Folgendes aus meiner web.config entfernt:
Wenn Sie sicherstellen möchten, dass alle Ihre Newtonsoft.Json-Pakete dieselbe Version haben, können Sie die Version wie folgt angeben:
quelle
Ich verwende Newtonsoft.Json v6.0.3, aber das musste ich in meiner Web.config-Datei tun:
Beachten Sie, dass ich, obwohl ich 6.0.3 verwende, eingeben musste
newVersion="6.0.0.0"
In meiner Datei packages.config habe ich:
quelle
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:
gefolgt von
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.
quelle
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.
quelle
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 ..
quelle
Durch Auskommentieren dieses Teils auf meiner web.config wurde mein Problem gelöst:
Aber natürlich müssen Sie sicherstellen, dass Sie aktualisiert haben oder die richtige Version haben, indem Sie dies in Ihrer Paketmanager-Konsole tun:
quelle
Ich habe die Schritte von Oleg ausprobiert und sie haben für meine gleiche Situation funktioniert.
Schritte:
Führen Sie
update-package Newtonsoft.Json -reinstall
im Paket-Manager aus.Löschen Sie Ihre,
bin
indem Sie die Anzeige der versteckten Dateien aktivieren und denbin
Ordner löschen .Schließen Sie Ihr Visual Studio und öffnen Sie es erneut.
Führen Sie nun Ihr Projekt erneut aus. Ich glaube es sollte ok sein!
quelle
Sie können das Problem lösen, indem Sie die folgenden Zeilen in die Datei web.config einfügen.
quelle
In meinem Fall ging es nur um:
Das Problem wurde verursacht, als ich einen TFS-Ordner neu zugeordnet habe.
quelle
Was mir tatsächlich geholfen hat, war, den Resharper-Build zu deaktivieren und die VisualStudio Re-Build-Option für mein Projekt zu verwenden.
quelle
von Tools >> NuGet Package Manager >> Paket für Lösungsupdate verwalten Newtonsoft.Json aller Lösungen auf die neueste Version
quelle
Wenn Sie mit einer Art Subversion arbeiten: Löschen Sie das Projekt und laden Sie es erneut herunter. Es hat bei mir funktioniert: S.
quelle
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 .
quelle
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.
quelle
In einigen Fällen, wenn Sie Ihre
Bin
undObj
Ordner löschen, wird dieses Problem gelöst.quelle
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.
quelle
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.
quelle
Wenn keines dieser Verfahren funktioniert, überprüfen Sie bitte diese Antwort:
https://stackoverflow.com/a/12011221/150370
( TL; DR : Entfernen Sie den XML-Namespace aus dem
configuration
Tag in Ihrer Konfigurationsdatei. Andernfalls werden Bindungsumleitungen ignoriert.)quelle
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
quelle
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.
Dann habe ich Visual Studio geschlossen, es erneut geöffnet und den folgenden Befehl in die Package Manager-Konsole eingegeben:
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.
quelle
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
quelle
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
quelle
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)
quelle
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
quelle
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.
quelle
Keine dieser Optionen hat bei mir funktioniert, am Ende war es das;
Test> Testeinstellungen> * .testrunconfig
Ich musste eine neue Zeile hinzufügen
Stellen Sie sicher, dass der Pfad und die Version für Ihr Setup korrekt sind.
quelle
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
quelle
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.
quelle
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
quelle
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.
quelle