it-swarm.com.de

Datei oder Assembly 'Newtonsoft.Json, Version = 4.5.0.0, Kultur = neutral, PublicKeyToken = 30ad4fe6b2a6aeed' konnte nicht geladen werden

Ich bekomme den Fehler 

System.IO.FileLoadException: Datei oder Assembly .__ konnte nicht geladen werden. 'Newtonsoft.Json, Version = 4.5.0.0, Kultur = neutral, PublicKeyToken = 30ad4fe6b2a6aeed 'oder eine seiner Abhängigkeiten. Das Die Manifestdefinition der lokalisierten Assembly stimmt nicht mit der Assembly überein Referenz. (Ausnahme von HRESULT: 0x80131040)

für meinen CI-Build

Lösung, die ich probiert 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

208
user3437755

Führen Sie in der Paket-Manager-Konsole Folgendes aus: Update-Package –reinstall Newtonsoft.Json.

UPDATE

Ich habe dies ursprünglich als Kommentar gepostet, aber als @OwenBlacker vorgeschlagen, lege ich es einfach hier:

Wenn Sie danach immer noch eine Fehlermeldung erhalten, ist es mir schließlich gelungen, den <dependentAssembly>-Abschnitt von Json.Net aus meiner .config-Datei zu löschen. Neu installieren bringt es zurück, wenn es nicht da ist und anscheinend müssen Sie es löschen. Bis es im Paket selbst eine normale Lösung gibt, ist dieser manuelle Schritt leider ein Muss.

Hinweis: Bitte lesen Sie die folgenden Kommentare bevor Sie dies tun.  

Laut Renés Kommentar unter BE AWARE wird der in der Antwort angegebene Befehl das Paket in jedem Projekt Ihrer Lösung neu installieren. Wenn Sie also das Newtonsoft.Json-Paket in mehreren Projekten verwenden und möglicherweise andere Versionen verwenden, kann das Ausführen des obigen Befehls möglicherweise unerwünschte Folgen haben.

218
bobah75

Für alle, die Probleme mit der Version Newtonsoft.Json v4.5 haben, versuchen Sie es in web.config oder app.config:

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

IMPORTANT: Stellen Sie sicher, dass der Tag configuration Ihrer Konfigurationsdatei kein Namespace-Attribut enthält (wie in https://stackoverflow.com/a/12011221/150370 vorgeschlagen). Andernfalls werden assemblyBinding-Tags ignoriert.

114
ZeroDotNet

Der Schlüsselpunkt ist der Bezug der richtigen Version in Ihrer Konfigurationsdatei.  

Schritte;

1- Schauen Sie sich die Version Ihres Newtonsoft.Json.dll in der Projektreferenz-Eigenschaft an, unabhängig von der Version in Ihrem Paketordner.

2- Schauen 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 ..

  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json"  publicKeyToken="30AD4FE6B2A6AEED" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="7.0.0.0"/>
  </dependentAssembly>
37
Kadir Can

Ich hatte kein Glück mit einer der hier vorgestellten Lösungen (Deinstallieren, Neuinstallieren, Löschen von Referenzen, Erstellen von BinderRedirects usw.). Ich musste zu einer alten Version von Newtonsoft zurückkehren. Version 5.0.6 hatte bereits funktioniert, also habe ich es versucht. Ich musste diese beiden Befehle in der Package Console eingeben:

uninstall-package newtonsoft.json -force

install-package newtonsoft.json -version "5.0.6"

Die Option -force im ersten Befehl ist erforderlich, um die Deinstallation zu erzwingen. Abhängigkeiten mit anderen Baugruppen verhindern die Deinstallation ohne.

24
Karl Hoaglund

Ich habe das Problem behoben, das diese Bindungsumleitung zu meiner .config-Datei hinzufügte:

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

Die Fehlermeldung beklagt, dass Version 4.5.0.0 nicht gefunden wurde. Die aktuelle Version von Newtonsoft.Json ist 6.0.0.0. Die Weiterleitung sollte von 4.5 auf 6.0 und nicht auf viceversa gehen

21
MiMo

Ich denke, Sie zeigen auf das falsche Ziel, ändern Sie es auf 4.5 statt 6.0

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

Das sollte funktionieren.

19
BrunoLM

Ich habe einige Tage damit verbracht, dieses frustrierende Problem zu lösen. Ich habe so ziemlich alles versucht, was im Web zu finden ist. Schließlich stellte ich fest, dass dieser Fehler (wie in meinem Fall) von den verschiedenen .Net-Projektversionen (4.5 und 4.5.1) in einer Lösung verursacht werden konnte. Die folgenden Schritte reparierten es für mich:

  1. Überprüfen Sie die .NET-Version jedes Projekts, das sich in Ihrer Lösung befindet. Klicken Sie einfach mit der rechten Maustaste auf das Projekt und gehen Sie zu Properties.

 enter image description here

  1. Stellen Sie möglichst dieselbe .Net-Version für alle -Projekte ein. Wenn nicht zumindest versuchen, das Startup-Projekt zu ändern (für mich war dies das Problem, das die Probleme verursacht).

  2. Entfernen Sie alle Newtonsoft.Json-Pakete aus der Lösung.

    uninstall-package newtonsoft.json -force

  3. Aktualisieren Sie alle Newtonsoft.Json-Versionen in allen packages.config-Dateien 

    <package id="Newtonsoft.Json" version="7.0.1" targetFramework="net451" />

  4. Installieren Sie Newtonsoft.Json von "Package Manager Console" erneut mit:

    install-package newtonsoft.json

  5. Erstellen Sie die Lösung neu

(Optional) 7. Wenn Sie das Startprojekt geändert haben, geben Sie es erneut ein 

18
ekostadinov
uninstall-package newtonsoft.json -force
install-package newtonsoft.json

Habe den Trick für mich gemacht :)

11
Chiranjeeb

Ich schrieb einen WebApi REST Service-Client. Daher wurde dieser Fehler für mich dadurch verursacht, dass Verweise zu den System.Net.Http- und System.Net.Http.Formatting-Assemblys manuell über "Referenz hinzufügen" hinzugefügt wurden, wenn ich das Microsoft.AspNet.WebApi.Client-Paket über hätte hinzufügen müssen NuGetSiehe auch diese Antwort auf eine andere Frage .

9
mschwaig

Entfernen Sie die Newtonsoft.Json Assembly aus der Projektreferenz und fügen Sie sie erneut hinzu. Sie haben die DLL wahrscheinlich aus Versehen gelöscht oder ersetzt. 

9
helb

wenn Sie mehrere Projekte in derselben Lösung und eine Bibliothek der jeweils anderen Prüfung verwenden, überprüfen, ob alle Projekte dieselbe Version von Newtonsoft.Json haben

9
Fatih

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-Open solution Explorer 2-Rechtsklick auf den Lösungsnamen 3-Select Nuget-Pakete für Solution 4-Select Updates aus dem Menü 5-Update JSON.NET-Paket

Dies wird Ihr Problem beheben.

link: Datei oder Assembly 'Newtonsoft.Json, Version = 7.0.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed' oder eine ihrer Abhängigkeiten konnte nicht geladen werden

7
mohammad

Normalerweise sollte das Hinzufügen der Bindungsumleitung das Problem lösen, aber es funktionierte nicht für mich. Nach ein paar Stunden, als ich meinen Kopf gegen die Wand schlug, wurde mir klar, dass es ein Xmlns-Attribut gab, das Probleme in meiner web.config verursachte. Nach dem Entfernen des xmlns-Attributs aus dem 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

6
David Paquette
<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="7.0.0.0"/>
  </dependentAssembly>
</assemblyBinding>

Funktioniert für mich .... setzen Sie einfach die Version, die Sie verwenden, in newVersion ein (neue Version = "7.0.0.0")

5
ali

Lösung schließen.

Öffnen Sie packages.config und *.csproj mit einem Texteditor und löschen Sie eine Zeile mit Newtonsoft.Json

Ex:
<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" />

Lösung erneut öffnen und Newtonsoft.Json von Install-Package Newtonsoft.Json erneut installieren

Es funktioniert für mich.

Bereitstellen der korrekten Version auf dem CI-Computer

Dies sagt Ihnen, dass das Assembly-Ladeprogramm eine andere Version der Newtonsoft.Json-Assembly gefunden hat, die nicht mit der in Ihrem Projekt erstellten Referenz übereinstimmt. Um die Assembly korrekt zu laden, müssen Sie entweder die Assembly neben Ihrem kompilierten Code bereitstellen oder die korrekte Version der Assembly auf dem Zielcomputer (d. H. Im GAC) installieren.

Alternative: Stelle sicher, dass die Konfiguration in der richtigen Datei ist

Wenn Sie die aktuelle Lösung beibehalten und eine Assembly mit einer anderen Version laden möchten, stellen Sie sicher, dass die von Ihnen gepostete Konfiguration in der richtigen .config-Datei enthalten ist. Denken Sie daran, dass es keinen xpto.dll.config gibt. Eine DLL, die von einer Anwendung geladen wird, verwendet immer die Konfigurationsdatei der laufenden Anwendung.

5
Miguel Angelo

Sie sollten die Datei web.config auf dem Server aktualisieren. Wenn NewtonSoft von nuget installiert wird, aktualisieren Sie diese Datei mit diesem Code

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

4
oaamados

Wir hatten genau das gleiche Problem, das Sie angesprochen haben. Wir verwenden nunit, um Tests über CI auszuführen, und wir haben nunit eine Datei namens tests.nunit, die eine Liste der auszuführenden Test-DLL-Fixtures beschreibt. 

Jedes Test-Fixture hatte eine eigene Konfigurationsdatei, aber wenn Sie die Datei "tests.nunit" durchlaufen, werden die Bindungsumleitungen scheinbar ignoriert. Die Lösung bestand darin, die Bindungsumleitungen zu einer neuen Konfigurationsdatei "tests.config" hinzuzufügen, die sich neben der Datei "tests.nunit" befand.

4
declyne

Ich hatte genau das gleiche Problem mit Version 7.0.0.0, und die Bibliothek, die mein Problem verursacht hat, war Microsoft.Rest.ClientRuntime , die sich trotz der richtigen Abhängigkeit irgendwie auf die falsche Version (6.0.0.0) von Newtonsoft.json bezog Management in Nugget (die richtige Version von newtonsoft.json (7.0.0.0) wurde installiert).

Ich habe das Problem gelöst, indem ich die obige Umleitung von 6.0.0.0 auf 7.0.0.0 (von Kadir Can) in der Konfigurationsdatei angewendet habe:

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

----> Nach einigen Tagen ohne Änderung kam es wieder zum gleichen Fehler. Ich habe Version 6.0.0.0 installiert und es auf 7.0.0.0 aktualisiert. Es funktioniert jetzt einwandfrei.

3
Lokman Ersoy

In meinem Fall bezog sich das Hauptprojekt auf , wobei immer noch auf eine alte Version von Newtonsoft.Json verwiesen wurde, die nicht mehr im Projekt vorhanden war (durch ein gelbes Ausrufezeichen angezeigt). Durch das Entfernen der Referenz wurde das Problem behoben. Es war keine Bindung von Redirect erforderlich.

3
IngoB

Ich habe das gleiche Problem. Und ich habe es auch gelöst, indem ich Folgendes getan habe: Gehen Sie zuTOOLS>NuGet Package Managerund SelectPackage Manager Console. Führen Sie schließlich die folgenden zwei Befehle aus :)

  1. uninstall-package newtonsoft.json -force
  2. Installationspaket newtonsoft.json
3
Masud Shrabon

Überprüfen Sie einfach die Version von Newtonsoft.JsonNewtonsoft properties

Dann müssen Sie diese Version in Ihre Web-Konfiguration einfügen (in meinem Fall 8.0.0.0) Web-Konfiguration

Ein weiteres heimtückisches Problem besteht darin, dass Bindungsumleitungen scheinbar unbemerkt fehlschlagen können, wenn das Element eine falsche Konfiguration für andere abhängige Assemblierungselemente hat.

Stellen Sie sicher, dass sich unter jedem Element nur ein Element befindet.

In einigen Fällen generiert VS Folgendes:

  <dependentAssembly>
    <assemblyIdentity ...
    <assemblyIdentity ...
  </dependentAssembly>

Anstatt 

  <dependentAssembly>
    <assemblyIdentity ...
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity ...
  </dependentAssembly>

Ich habe lange gebraucht, um zu realisieren, dass dies das Problem war!

2
Daniel

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 seltsamerweise als .NET 2.0-Projekt hinzu ... und als ich versuchte, die 4.5-DLL von NewtonSoft damit zu verwenden, bekam ich dieses Newtonsoft.Json konnte nicht gefunden werden.

Die Lösung bestand natürlich darin, dieses neue Projekt von .Net 2.0 auf 4.5 zu ändern.

2
Mike Gledhill

Nichts von oben hat mir geholfen, aber was wirklich behoben wurde, ist folgendes:

  1. Entfernen Sie alle Abhängigkeitsbindungen in app.config (aus allen app.config-Dateien in der Lösung).
  2. Führen Sie den folgenden Befehl aus "Package Manager Console" aus.

Get-Project-All | Add-BindingRedirect

  1. Wiederaufbau

Referenz: http://blog.myget.org/post/2014/11/27/Could-not-load-file-or-Assembly-NuGet-Assembly-Redirects.aspx

2
valentinvs

Ich stand vor dem gleichen Fehler und hatte stundenlang Probleme damit. Ich hatte ein Web-API-Projekt, das Newtonsoft.json und ein anderes UnitTest-Projekt für das Web-API-Projekt verwendet. Das Unit-Testprojekt benötigte auch die Referenz Newtonsoft.json. Aber als ich den Link hinzufügte, bekam ich die obige Ausnahme.

Ich habe es schließlich behoben, indem ich das folgende Code-Snippet in der app.config des Unit-Testprojekts hinzugefügt 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>
2
mukulsharma1146

In meinem Fall habe ich nach dem Herunterladen der Assembly und dem Hinzufügen der Referenz zum Projekt das Problem gelöst, indem die DLL "Blockierung aufgehoben" wurde, bevor die Referenz zum Projekt hinzugefügt wurde.

Navigieren Sie mit Windows Explorer zum Speicherort DLL, klicken Sie mit der rechten Maustaste auf DLL, und wählen Sie dann 'Eigenschaften' aus. Auf einer der Registerkarten befindet sich eine Schaltfläche zum Entsperren. Anschließend können Sie die Referenz hinzufügen und die Assembly wird korrekt geladen.

2
VorTechS

Neuinstallieren des Newtonsoft-Pakets durch Nuget hat bei mir nicht funktioniert. Ich musste JsonConvert.DeserializeObject manuell anrufen, um dieses Problem zu umgehen

Ich habe mich verändert 

HttpResponseMessage response = await client.GetAsync(url));
response.EnsureSuccessStatusCode();
MyObject data = await response.Content.ReadAsAsync<MyObject>();

Zum 

HttpResponseMessage response = await client.GetAsync(url));
response.EnsureSuccessStatusCode();
string jsonStr = await response.Content.ReadAsStringAsync();
MyObject data = JsonConvert.DeserializeObject<MyObject>(jsonStr);
2
Bioupy

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. Dann führen Sie Ihre App aus

2
uche Godfrey

Unter dem Abschnitt fügen Sie Ihre web.config hinzu

<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>
2
Jaydeep Shil

Wenn der Fehler lokal nicht angezeigt wird und immer noch auf dem Server angezeigt wird, besteht die Lösung darin, den Ordner bin und packages.config und web.config zu löschen und diese Dateien erneut zu laden

2
Ahmad Alaa

Noch ein Rat zum offenen Thema. Der Fehler erscheint nach dem Ausführen der "Analyse": In den Projekteinstellungen wurde etwas geändert. Das Problem war das in:

Projekt/Einstellungen/Build/Plattformziel

erschienen "Beliebige CPU" .

Das Zurücksetzen auf x86 (oder vielleicht x64 in Ihrem Fall) hat das Problem gelöst.

1
Badiboy

Das Problem für mich war eine abgeschriebene Version von Newtonsoft.Json. Neuinstallation hat nicht geholfen.

Gehen Sie in Visual Studio zu Extras-> NuGet-Pakete verwalten. Wählen Sie Updates aus. Suchen Sie nach Newtonsoft. Klicken Sie auf Update, um die neueste Version zu installieren.

1
spadelives

Stellen Sie auch in einer CI-Umgebung mit NuGet Restore sicher, dass in der Quellcodeverwaltung keine Teilordner geprüft werden. Beim Hinzufügen von Ordnern zur Quellcodeverwaltung werden standardmäßig automatisch Baugruppen ausgeschlossen. Außerdem wird dadurch der gesamte Zweck der Wiederherstellung von Nuget-Paketen nach dem Build übergangen. Entweder das Prüfen von Baugruppen oder das Nicht-Einchecken von Paketordnern wird erfolgreich erstellt, aber die beste Vorgehensweise ist, Nuget-Pakete nicht in der Quellcodeverwaltung zu überprüfen. 

1
JMiera

Ich habe dieses Problem durch Installieren des Nuget-Pakets gelöst: Microsoft ASP.NET Web API 2.2-Clientbibliotheken. Dies wiederum installierte die Version 6.04 von newtonsoft.json

1
JohnnyBT

Abgesehen von vielen Antworten hier habe ich etwas gefunden und es hinzugefügt. Zuerst stellen Sie sicher, dass die DLL nicht von GAC referenziert wird.

Beim Hinzufügen/Ändern von dll von Newtonsoft.Json wird manchmal * .csproj des Projekts nicht geändert, oder die geänderte Version von json dll wird nicht in csproj der Lösung angezeigt.

Öffnen Sie also das Projekt in notepad ++ und suchen Sie nach Newtonsoft.Json, und benennen Sie den JSON explizit von der alten Version in die Neue Version um. Jetzt, nachdem Sie wieder auf VS geklickt haben, wird die Projektmappe/das Projekt mit der benötigten Version Newtonsoft.JSON dll neu geladen.

0
Hameed Syed

Sie finden die installierte Version von ur library in den Eigenschaften in den Referenzen. Für meinen Fall hatte ich 8.0.0.0 installiert. Fehler sagt Could not load file or Assembly 'Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies.

Also musste ich folgendes manuell in web.config hinzufügen 

  <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" />
        <bindingRedirect oldVersion="6.0.0.0-8.0.0.0" newVersion="8.0.0.0" />
      </dependentAssembly>
0
Irshu
updating web.config with the following Assembly binding resolved the issue 
<runtime>
    <assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">     
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"
                culture="neutral" />
        <bindingRedirect oldVersion="4.5.0.0" newVersion="6.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
0
Subhamay

Ich habe seit ungefähr einem Tag damit zu kämpfen, habe jede Lösung ausprobiert ... Was mir geholfen hat, war, die Großbuchstaben in app.config zu überprüfen. Ich hatte PublicKeyToken anstelle von publicKeyToken, nachdem es plötzlich geändert wurde.

0
Igor Be

In meinem Fall hatte ich den Ordnernamen Newtonsoft.Json.6.0.7

 enter image description here

aber .csproj-Datei hatte Pfad durch Ordner ...\Newtonsoft.Json.6.0.5\...

 enter image description here

Durch Ändern der .csproj-Datei in 6.0.7 wurde das Problem behoben.

0
Alex L