Ich erhalte den Fehler
System.IO.FileLoadException: Datei oder Assembly 'Newtonsoft.Json, Version = 4.5.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed' oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Die Manifestdefinition der gefundenen Assembly stimmt nicht mit der Assemblyreferenz überein. (Ausnahme von HRESULT: 0x80131040)
für meinen CI Build
Lösung, die ich versucht habe
<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>
Es hat auch nicht funktioniert
Antworten:
Führen Sie in der Paketmanager-Konsole Folgendes aus :
Update-Package –reinstall Newtonsoft.Json
.AKTUALISIEREN
Ich habe dies ursprünglich als Kommentar gepostet, aber wie @OwenBlacker vorgeschlagen hat, werde ich es einfach hier einfügen:
Wenn Sie danach immer noch eine Fehlermeldung erhalten, hat es für mich letztendlich funktioniert, dass ich den
<dependentAssembly>
Abschnitt von Json.Net aus meiner.config
Datei gelöscht habe . Neu installieren bringt es zurück, wenn es nicht da ist und Sie es anscheinend löschen müssen. Bis es eine normale Lösung im Paket selbst gibt, ist dieser manuelle Schritt leider ein Muss.Hinweis: Bitte lesen Sie die folgenden Kommentare, bevor Sie dies tun.
Laut Renés Kommentar unten BEACHTEN SIE, dass der in der Antwort angegebene Befehl das Paket in jedem Projekt in Ihrer Lösung neu installiert. Wenn Sie also das Newtonsoft.Json-Paket in mehreren Projekten verwenden und möglicherweise unterschiedliche Versionen verwenden, kann die Ausführung des obigen Befehls unerwünschte Folgen haben.
quelle
<dependentAssembly>
.config
Wenn Sie Probleme mit der Version Newtonsoft.Json v4.5 haben, versuchen Sie dies in web.config oder app.config:
WICHTIG : Überprüfen Sie, ob das
configuration
Tag Ihrer Konfigurationsdatei kein Namespace-Attribut hat (wie in https://stackoverflow.com/a/12011221/150370 vorgeschlagen ). Andernfalls werdenassemblyBinding
Tags ignoriert.quelle
newVersion="6.0.0.0"
muss daher auf die vonnewVersion="7.0.0.0"
Ihnen verwendete Version geändert werdenDer entscheidende Punkt ist die Referenzierung der richtigen Version in Ihrer Konfigurationsdatei.
Schritte;
1- Sehen Sie sich die Version Ihrer Newtonsoft.Json.dll in der Projektreferenzeigenschaft an, unabhängig von der Version in Ihrem Paketordner (zum Beispiel ist meine Version 7.0.1 und die Referenzversion ist 7.0.0.0).
2- Sehen Sie sich an, was das Projekt in der Ausnahme von Ihnen erwartet (meins ist 6.0.0.0).
3- Fügen Sie Ihrer Konfigurationsdatei die abhängige Assembly hinzu, wie sie sein sollte.
quelle
Ich hatte kein Glück mit einer der hier vorgestellten Lösungen (Deinstallieren, Neuinstallieren, Löschen von Referenzen, Erstellen von BindingRedirects usw.). Ich musste zu einer alten Version von Newtonsoft zurückkehren. Version 5.0.6 hat schon früher funktioniert, also habe ich es versucht. Ich musste diese beiden Befehle in die Paketkonsole eingeben:
uninstall-package newtonsoft.json -force
install-package newtonsoft.json -version "5.0.6"
Die
-force
Option im ersten Befehl ist erforderlich, um die Deinstallation zu erzwingen. Abhängigkeiten mit anderen Assemblys verhindern die Deinstallation ohne diese.quelle
Ich habe das Problem beim Hinzufügen dieser Bindungsumleitung zu meiner .config-Datei behoben:
Die Fehlermeldung beschwert sich darüber, dass Version 4.5.0.0 nicht gefunden wurde. Die aktuelle Version von Newtonsoft.Json ist 6.0.0.0, daher sollte die Umleitung von 4.5 auf 6.0 erfolgen, nicht umgekehrt
quelle
Ich denke, Sie zeigen auf das falsche Ziel, ändern Sie es auf 4.5 anstelle von 6.0
Das sollte funktionieren.
quelle
Ich habe ein paar Tage damit verbracht, dieses frustrierende Problem zu lösen. Ich habe so ziemlich alles ausprobiert, was im Web zu finden ist. Schließlich stellte ich fest, dass dieser Fehler (wie in meinem Fall) durch die verschiedenen .Net-Zielprojektversionen (4.5 und 4.5.1) in einer Lösung verursacht werden kann. Die folgenden Schritte haben es für mich behoben:
Properties
.Stellen Sie nach Möglichkeit für alle Projekte die gleiche .NET-Version ein . Wenn nicht, versuchen Sie zumindest, das Startup-Projekt zu ändern (für mich war dies dasjenige, das die Probleme verursacht hat).
Entfernen Sie alle
Newtonsoft.Json
Packungen aus der Lösung.uninstall-package newtonsoft.json -force
Aktualisieren Sie alle
Newtonsoft.Json
Versionen in allenpackages.config
Dateien wie folgt<package id="Newtonsoft.Json" version="7.0.1" targetFramework="net451" />
Neuinstallation
Newtonsoft.Json
von "Package Manager Console" mit:install-package newtonsoft.json
Erstellen Sie die Lösung neu
(Optional) 7. Wenn Sie das Startprojekt geändert haben, geben Sie es erneut zurück
quelle
Hab den Trick für mich gemacht :)
quelle
Wenn Sie mehrere Projekte in derselben Lösung und Bibliothek der einen anderen Prüfung verwenden, haben alle Projekte dieselbe Version von Newtonsoft.Json
quelle
Entfernen Sie die Newtonsoft.Json-Assembly aus der Projektreferenz und fügen Sie sie erneut hinzu. Sie haben die DLL wahrscheinlich versehentlich gelöscht oder ersetzt.
quelle
Ich habe einen WebApi-REST-Service-Client geschrieben. Daher wurde dieser Fehler durch das manuelle Hinzufügen von Verweisen zu
System.Net.Http
undSystem.Net.Http.Formatting
Assemblys über Verweis hinzufügen verursacht , wenn ich dasMicrosoft.AspNet.WebApi.Client
Paket über NuGet hätte hinzufügen sollen . Siehe auch diese Antwort auf eine andere Frage .quelle
Sie haben 2 verschiedene Versionen der JSON.NET-Bibliothek in Ihrer Lösung. Um dies zu lösen, sollten Sie sie auf die neueste Version aktualisieren. Folge diesen Schritten:
1-Öffnen Sie den Solution Explorer. 2-Klicken Sie mit der rechten Maustaste auf den Lösungsnamen. 3-Wählen Sie Nuget-Pakete für Lösung verwalten aus. 4-Wählen Sie Updates aus dem Menü aus. 5-Aktualisieren Sie das JSON.NET-Paket
Dadurch wird Ihr Problem behoben.
Link: Datei oder Assembly 'Newtonsoft.Json, Version = 7.0.0.0, Kultur = neutral, PublicKeyToken = 30ad4fe6b2a6aeed' oder eine ihrer Abhängigkeiten konnte nicht geladen werden
quelle
Stellen Sie die richtige Version auf dem CI-Computer bereit
Dies zeigt Ihnen, dass der Assembly Loader eine andere Version der
Newtonsoft.Json
Assembly gefunden hat, die nicht mit der Referenz übereinstimmt, die Sie in Ihrem Projekt erstellt haben. Um die Assembly korrekt zu laden, müssen Sie die Assembly entweder neben Ihrem kompilierten Code bereitstellen oder die richtige Version der Assembly auf dem Zielcomputer (dh im GAC) installieren.Alternative: Stellen Sie sicher, dass sich die Konfiguration in der richtigen Datei befindet
Wenn Sie die aktuelle Lösung beibehalten und eine Assembly mit einer anderen Version laden möchten, stellen Sie sicher, dass sich die von Ihnen veröffentlichte Konfiguration in der richtigen
.config
Datei befindet. Denken Sie daran, dass es keinexpto.dll.config
gibt. Eine von einer Anwendung geladene DLL verwendet immer die Konfigurationsdatei der laufenden Anwendung.quelle
Normalerweise sollte das Hinzufügen der Bindungsumleitung dieses Problem lösen, aber es hat bei mir nicht funktioniert. Nachdem ich ein paar Stunden lang meinen Kopf gegen die Wand geschlagen hatte, stellte ich fest, dass ein xmlns-Attribut Probleme in meiner web.config verursachte. Nach dem Entfernen des xmlns-Attributs vom Konfigurationsknoten in Web.config funktionierten die Bindungsumleitungen wie erwartet.
http://www.davepaquette.com/archive/2014/10/02/could-not-load-file-or-assembly-newtonsoft-json-version4-5-0-0.aspx
quelle
Funktioniert für mich .... fügen Sie einfach die Version, die Sie verwenden, in newVersion ein, dh (newVersion = "7.0.0.0")
quelle
Lösung schließen.
Öffnen Sie
packages.config
und*.csproj
mit Texteditor und löschen Sie jede Zeile haben Newtonsoft.JsonEx:
<Reference Include="Newtonsoft.Json,Version=9.0.0.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> <HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\net40\Newtonsoft.Json.dll</HintPath> <Private>True</Private> </Reference>
Oder
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net40" />
Öffnen Sie die Lösung erneut und installieren Sie Newtonsoft.Json von neu
Install-Package Newtonsoft.Json
Es funktioniert für mich.
quelle
Wir hatten genau das gleiche Problem, das Sie erwähnt haben. Wir verwenden nunit, um Tests über CI auszuführen, und nunit führt nun eine Datei mit dem Namen tests.nunit aus, die eine Liste der auszuführenden Test-DLL-Fixtures beschreibt.
Jedes Testgerät hatte seine eigene Konfigurationsdatei, aber wenn die Datei "tests.nunit" durchlaufen wird, scheinen die Bindungsumleitungen ignoriert zu werden. Die Lösung bestand darin, die Bindungsumleitungen zu einer neuen Konfigurationsdatei "tests.config" hinzuzufügen, die sich neben der Datei "tests.nunit" befand.
quelle
Ich habe die gleiche Art von Problem. Und ich habe es auch folgendermaßen gelöst: Gehen Sie zu TOOLS > NuGet Package Manager und wählen Sie Package Manager Console . Führen Sie abschließend die folgenden zwei Befehle aus :)
quelle
Sie sollten die Datei web.config auf dem Server aktualisieren. Wenn Nuget NewtonSoft installiert, aktualisieren Sie diese Datei einschließlich dieses Codes
quelle
Überprüfen Sie einfach die Version der Newtonsoft.Json Newtonsoft-Eigenschaften
Dann müssen Sie diese Version in Ihrem Web - Config hinzuzufügen (in meinem Fall 8.0.0.0) Web Config
quelle
Ich habe den Fehler gemacht, eine NewtonSoft-DLL-Datei für .Net 4.5 hinzuzufügen.
Mein Hauptprojekt war 4.5, aber als ich meiner Lösung ein zusätzliches Projekt hinzufügte, fügte es es seltsamerweise als .NET 2.0-Projekt hinzu ... und als ich versuchte, NewtonSofts 4.5-DLL damit zu verwenden, bekam ich dieses "Newtonsoft.Json konnte nicht" 't nicht gefunden "Fehler.
Die Lösung bestand (natürlich) darin, dieses neue Projekt von .Net 2.0 auf 4.5 zu ändern.
quelle
In meinem Fall bezog sich das Hauptprojekt immer noch auf eine alte Version von Newtonsoft.Json, die im Projekt nicht mehr vorhanden war (angezeigt durch ein gelbes Ausrufezeichen). Das Entfernen der Referenz löste das Problem, es war keine BindingRedirect erforderlich.
quelle
Ich hatte genau das gleiche Problem mit Version 7.0.0.0 und die Bibliothek, die mein Problem verursachte, war Microsoft.Rest.ClientRuntime, die sich trotz des richtigen Abhängigkeitsmanagements in Nugget (irgendwie auf die falsche Version (6.0.0.0) von Newtonsoft.json bezog). Die richtige Version von newtonsoft.json (7.0.0.0) wurde installiert.
Ich habe dieses Problem gelöst, indem ich die Umleitung von 6.0.0.0 auf 7.0.0.0 (von Kadir Can) in der Konfigurationsdatei angewendet habe:
----> Nach ein paar Tagen, ohne etwas zu ändern, kam es wieder zu demselben Fehler. Ich habe Version 6.0.0.0 installiert und auf 7.0.0.0 aktualisiert. Es funktioniert jetzt einwandfrei.
quelle
In meinem Fall habe ich dies nach dem Herunterladen der Assembly und dem Hinzufügen des Verweises zum Projekt gelöst, indem ich die DLL entsperrt habe, bevor ich den Verweis zum Projekt hinzugefügt habe.
Navigieren Sie im Windows Explorer zum DLL-Speicherort, klicken Sie mit der rechten Maustaste auf die DLL und wählen Sie dann "Eigenschaften". Auf einer der Registerkarten befindet sich eine Schaltfläche zum Entsperren. Anschließend können Sie die Referenz hinzufügen, und die Baugruppe wird korrekt geladen.
quelle
Nichts von oben hat mir geholfen, aber was es tatsächlich behoben hat, ist das Folgende:
Get-Project -All | Add-BindingRedirect
Referenz: http://blog.myget.org/post/2014/11/27/Could-not-load-file-or-assembly-NuGet-Assembly-Redirects.aspx
quelle
Klicken Sie mit der rechten Maustaste auf Ihr Projekt, wählen Sie Nuget-Pakete verwalten, geben Sie newtonsoft in das Suchfeld ein und installieren Sie die neueste Version. Führen Sie dann Ihre App aus
quelle
Ich hatte den gleichen Fehler und kämpfte stundenlang damit. Ich hatte ein Web-API-Projekt, das Newtonsoft.json verwendet, und ein anderes UnitTest-Projekt für das Web-API-Projekt. Das Unit-Test-Projekt benötigte auch die Referenz Newtonsoft.json. Aber beim Hinzufügen des Links bekam ich die obige Ausnahme.
Ich habe es schließlich gelöst, indem ich das folgende Code-Snippet in die app.config des Unit-Test-Projekts eingefügt habe:
quelle
Ein weiteres heimtückisches Problem besteht darin, dass Bindungsumleitungen anscheinend nur unbemerkt fehlschlagen können, wenn das Element eine falsche Konfiguration für andere abhängige Assembly-Elemente aufweist.
Stellen Sie sicher, dass Sie nur ein Element unter jedem Element haben.
In einigen Fällen generiert VS Folgendes:
Anstatt
Ich habe lange gebraucht, um zu erkennen, dass dies das Problem war!
quelle
Der folgende Abschnitt fügt sich in Ihre web.config ein
quelle
Wenn der Fehler lokal verschwindet und weiterhin auf dem Server angezeigt wird, besteht die mit mir funktionierende Lösung darin, den Ordner bin und die Dateien packages.config und web.config zu löschen und diese Dateien erneut hochzuladen
quelle