Ne pouvait pas charger le fichier ou l'Assemblée 'Newtonsoft.Json, Version = 4.5.0.0, Culture= neutre, PublicKeyToken = 30ad4fe6b2a6aeed"

j'obtiens l'erreur

Système

.IO.FileLoadException : impossible de charger le fichier ou l'assemblage "Newtonsoft.Json, Version = 4.5.0.0, Culture = neutre, PublicKeyToken=30ad4fe6b2a6aeed" ou l'une de ses dépendances. Le situé à l'assemblée manifeste définition ne correspond pas à l'assemblée référence. (Exception de HRESULT: 0x80131040)

pour mon implant construire

Solution que j'ai essayé

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

Il n'a pas de travail

193
demandé sur Owen Blacker 2014-03-19 17:20:40

30 réponses

dans la console du gestionnaire de paquets exécuter: Update-Package –reinstall Newtonsoft.Json .

mise à JOUR

j'ai initialement posté ceci comme un commentaire mais comme @OwenBlacker a suggéré que je vais juste le mettre ici:

si vous obtenez toujours une erreur après avoir fait ceci, alors ce qui a fonctionné pour moi finalement est que j'ai supprimé Json.Net 's <dependentAssembly> section de mon fichier .config . Réinstaller le ramène si elle n'est pas là et apparemment, vous avez besoin de le supprimer. Jusqu'à ce qu'il y ait une solution normale dans le paquet lui-même, je crains que cette étape manuelle est un must.

Note: Veuillez lire les commentaires ci-dessous avant de le faire.

comme dans le commentaire de René ci-dessous soyez conscient que la commande postée dans la réponse va réinstaller le paquet dans chaque projet de votre solution. Donc, si vous utilisez le Newtonsoft.Paquet Json en plusieurs projets et peut-être utiliser différentes versions, juste exécuter la commande ci-dessus pourrait avoir des conséquences indésirables.

209
répondu bobah75 2016-05-19 12:31:29

à tous ceux qui ont des problèmes avec Newtonsoft.Json v4.5 Version essayez de l'utiliser dans web.config ou 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 : vérifiez que la balise configuration de votre fichier de configuration n'a pas d'attribut namespace (comme suggéré dans https://stackoverflow.com/a/12011221/150370 ). Sinon ,les balises assemblyBinding seront ignorées.

110
répondu ZeroDotNet 2017-05-23 12:26:26

le point clé est de référencer la bonne version dans votre fichier de configuration.

Étapes;

1-Regardez ce qu'est la version de votre Newtonsoft.Json.dll dans la propriété de référence du projet quelle que soit la version dans votre dossier package (Par exemple mine est 7.0.1 et la Version de référence est 7.0.0)

2-Regardez ce que le projet attend de vous dans l'exception (la mienne est 6.0.0.0)

3 - Ajouter l'assemblage dépendant à votre fichier de configuration comme il se doit..

  <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>
34
répondu Kadir Can 2018-04-04 11:47:58

Je n'ai eu de chance avec aucune des solutions présentées ici (désinstallation, réinstallation, suppression de références, création de bindingRedirects etc.) J'ai dû revenir à une ancienne version de Newtonsoft. La Version 5.0.6 fonctionnait déjà, donc j'ai essayé celle-là. J'ai dû entrer ces deux commandes dans la Console du paquet:

uninstall-package newtonsoft.json -force

install-package newtonsoft.json -version "5.0.6"

l'option -force dans la première commande est nécessaire pour forcer désinstallation. Dépendances avec d'autres assemblées empêcher la désinstallation sans elle.

24
répondu Karl Hoaglund 2014-09-20 18:22:19

j'ai corrigé le problème en ajoutant cette redirection de liaison à mon .fichier de configuration:

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

le message d'erreur se plaint de ne pas trouver la version 4.5.0.0, la version actuelle de Newtonsoft.Json est 6.0.0.0 donc la redirection devrait passer de 4.5 à 6.0, pas viceversa

21
répondu MiMo 2014-11-19 16:26:49

je pense que vous pointez vers la mauvaise cible, changez-la à 4.5 au lieu de 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>

ça devrait marcher.

19
répondu BrunoLM 2014-07-03 00:04:14

j'ai passé deux jours à essayer de résoudre ce problème frustrant. J'ai essayé à peu près tout ce qui peut être trouvé sur le web. Finalement, j'ai découvert que cette erreur pouvait être causée (comme dans mon cas) par les différentes versions du projet target .Net (4.5 et 4.5.1) dans une seule solution. Les pas ci-dessous l'ont fixé pour moi:

  1. vérifiez la version. net de chaque projet qui est dans votre solution. Cliquez avec le bouton droit de la souris sur le projet et passez à Properties .

enter image description here

  1. Si possible identiques .Net pour la version tous des projets. Si non au moins essayer de changer le projet de démarrage un (pour moi c'était celui qui a causé les problèmes).

  2. retirer tous les paquets Newtonsoft.Json de la solution.

    uninstall-package newtonsoft.json -force

  3. mettre à jour toutes les Newtonsoft.Json versions dans tous les packages.config fichiers, comme

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

  4. réinstaller Newtonsoft.Json de "Console du Gestionnaire de paquets" avec:

    install-package newtonsoft.json

  5. reconstruire la solution

(facultatif) 7. Si vous avez changé le projet de démarrage, retourner

18
répondu ekostadinov 2016-02-14 21:51:36
uninstall-package newtonsoft.json -force
install-package newtonsoft.json

a Fait le tour pour moi :)

11
répondu Chiranjeeb 2016-01-25 03:16:55

supprimer le Newtonsoft.Json assemblée du projet de référence et l'ajouter à nouveau. Vous avez probablement supprimé ou remplacé la dll par accident.

9
répondu helb 2014-03-19 13:25:35

j'écrivais un client de service de repos WebApi, donc pour moi cette erreur a été causée par l'ajout de références aux assemblages System.Net.Http et System.Net.Http.Formatting manuellement via ajouter une référence, alors que j'aurais dû ajouter le paquet Microsoft.AspNet.WebApi.Client via NuGet . Voir aussi cette réponse à une autre question .

9
répondu mschwaig 2017-05-23 12:03:03

si vous utilisez plusieurs projets dans la même solution et bibliothèque de l'un autre vérifiez que tous les projets ont la même version de Newtonsoft.Json

7
répondu Fatih 2016-06-25 14:32:37

normalement ajouter la redirection de liaison devrait résoudre ce problème, mais il ne fonctionnait pas pour moi. Après quelques heures à frapper ma tête contre le mur, j'ai réalisé qu'il y avait un attribut xmlns qui causait des problèmes dans ma toile.config. Après avoir supprimé l'attribut xmlns du noeud de configuration dans Web.config, les redirections de liaison ont fonctionné comme prévu.

http://www.davepaquette.com/archive/2014/10/02/could-not-load-file-or-assembly-newtonsoft-json-version4-5-0-0.aspx

6
répondu David Paquette 2014-10-03 01:43:11

vous avez 2 versions différentes de JSON.NET bibliothèque dans votre solution. Pour résoudre cela, vous devez les mettre à jour à la dernière version. Suivez ces étapes:

1-Ouvrez l'explorateur de solutions 2-clic droit sur le nom de la solution 3-sélectionnez Gérer les paquets Nuget pour la Solution 4-sélectionnez Mises à jour dans le menu 5-Mise à jour JSON.NET paquet

cela résoudra votre problème.

lien: ne pouvait pas charger le fichier ou l'assemblage Newtonsoft.Json, Version = 7.0.0.0, Culture= neutre, PublicKeyToken=30ad4fe6b2a6aeed 'ou l'une de ses dépendances

6
répondu mohammad 2017-03-16 11:24:11

déployer la version correcte sur la machine CI

c'est vous dire que le chargeur d'assemblage a trouvé une version différente de l'assemblage Newtonsoft.Json , qui ne correspond pas à la référence que vous avez créé dans votre projet. Pour charger correctement l'assemblage, vous devez soit déployer l'assemblage côte à côte avec votre code compilé, soit installer la version correcte de l'assemblage dans la machine de destination (i.e. dans le GAC).

Alternative: assurez-vous que la configuration est dans le bon fichier

si vous voulez garder la solution actuelle, et charger un assemblage avec une version différente, assurez-vous que la configuration que vous avez posté est dans le bon fichier .config . Rappelez-vous qu'il n'y a pas de xpto.dll.config , une DLL chargée par une application utilise toujours le fichier de configuration de l'application en cours d'exécution.

5
répondu Miguel Angelo 2014-03-19 13:37:12
<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>

ça me va.... mettez juste la version que vous utilisez dans newVersion I. e (newVersion="7.0.0.0")

5
répondu ali 2016-01-25 03:16:00

Près de la solution.

Ouvrir packages.config et *.csproj avec un éditeur de texte et de supprimer toute la ligne ont 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>

ou <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net40" />

ouvrir à nouveau la solution et réinstaller Newtonsoft.Json par Install-Package Newtonsoft.Json

ça marche pour moi.

5
répondu Trương Quốc Khánh 2017-11-22 01:30:50

nous avions exactement le même problème que vous avez mentionné. Nous utilisons nunit pour faire des tests par CI, et nous avons nunit qui exécute un fichier appelé tests.nunit, qui décrit une liste de fixtures dll de test à exécuter.

chaque montage d'essai avait son propre fichier de configuration, mais lorsqu'il était exécuté à travers les " tests.nunit " fichier les redirections de reliure semblent être ignorées. La solution était d'ajouter les redirections de liaison à un nouveau fichier de configuration, "tests.config" qui était à côté de la "tests.dossier nunit.

4
répondu declyne 2014-04-14 15:00:01

vous devez mettre à jour le web.fichier de configuration du serveur. Lorsque nuget installer NewtonSoft mettre à jour ce fichier, y compris ce 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
répondu oaamados 2015-11-04 04:10:18

j'ai le même type de problème. Et j'ai aussi résolu le suivant: Aller à OUTILS > Gestionnaire de Package NuGet et Sélectionnez Gestionnaire de paquets de la Console . Enfin, exécutez les deux commandes suivantes :)

  1. désinstaller-paquet newtonsoft.JSON-force
  2. install-package newtonsoft.json
3
répondu Masud Shrabon 2015-03-04 13:29:59

dans mon cas, le projet principal était faisant encore référence à une ancienne version de Newtonsoft.Json qui n'existait plus dans le projet (indiqué par un point d'exclamation jaune). La suppression de la référence a résolu le problème, aucun correctif n'a été nécessaire.

3
répondu IngoB 2015-07-27 07:49:05

j'ai eu exactement le même problème avec la version 7.0.0.0, et la lib causant mon problème était Microsoft.Reste.ClientRuntime qui se référait en quelque sorte à la mauvaise version (6.0.0.0) de Newtonsoft.json, malgré la bonne gestion des dépendances dans nugget (la bonne version de newtonsoft.json (7.0.0.0) a été installé).

j'ai résolu ce problème en appliquant la redirection ci-dessus de 6.0.0.0 à 7.0.0.0 (à partir de Kadir Can) dans le fichier de configuration:

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

- - - - > après quelques jours sans rien changer, il est réapparu avec la même erreur. J'ai installé la version 6.0.0.0 n mise à jour à 7.0.0.0 elle fonctionne bien maintenant.

3
répondu Lokman Ersoy 2015-10-26 15:01:16

dans mon cas, après avoir téléchargé l'assemblée et ajouté la référence au projet, j'ai résolu cela en 'débloquant' la DLL avant d'ajouter la référence au projet.

en utilisant Windows explorer, parcourir L'emplacement DLL, clic droit sur la DLL et ensuite sélectionner "Propriétés". Vous trouverez un "débloquer" bouton sur l'un des onglets, puis vous pouvez ajouter la référence et l'assemblée se charger correctement.

2
répondu VorTechS 2014-04-10 14:17:10

j'ai fait l'erreur d'ajouter un NewtonSoft .fichier dll pour .Net 4.5.

mon projet principal était 4.5, mais quand j'ai ajouté un projet supplémentaire à ma solution, il l'a étrangement ajouté comme un projet .Net 2.0... et quand J'ai essayé D'utiliser la dll 4.5 de NewtonSoft avec ça, j'ai eu ce "Newtonsoft.JSON ne pouvait pas être trouvé" erreur.

la solution (bien sûr) était de changer ce nouveau projet de .Net 2.0 à 4.5.

2
répondu Mike Gledhill 2014-07-29 14:53:22

rien de ce qui est en haut ne m'a aidé, mais ce qui a été corrigé est le suivant:

  1. supprimer toutes les liaisons de dépendance Dans app.config (à partir de l'app.fichiers de configuration dans la solution)
  2. exécuter la commande suivante à partir de "console du Gestionnaire de paquets"

Get-Projet | Ajouter-BindingRedirect

  1. reconstruire

référence: http://blog.myget.org/post/2014/11/27/Could-not-load-file-or-assembly-NuGet-Assembly-Redirects.aspx

2
répondu valentinvs 2015-01-27 13:45:47

faites un clic droit sur votre projet, sélectionnez Gérer les paquets Nuget, tapez newtonsoft dans la boîte de recherche et installez la dernière version. Puis lancez votre application

2
répondu uche Godfrey 2015-05-07 14:56:35

je faisais face à la même erreur et j'ai lutté avec elle pendant des heures. J'avais un projet D'API web qui utilise Newtonsoft.json et un autre projet UnitTest pour le projet D'API web. Le projet de test de l'unité a également eu besoin du Newtonsoft.json de référence. Mais en ajoutant le lien j'obtenais l'exception ci-dessus.

j'ai finalement résolu en ajoutant l'extrait de code ci-dessous dans l'application.config de l'unité de test du projet:

<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
répondu mukulsharma1146 2015-05-18 16:57:08

un autre problème insidieux est qu'il apparaît que les redirections de liaison peuvent tout simplement échouer silencieusement si l'élément a une configuration incorrecte sur tout autre élément d'assemblage dépendant.

assurez-vous que vous n'avez qu'un élément sous chaque élément.

dans certains cas, VS génère ceci:

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

au lieu de

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

m'a fallu du temps pour réaliser que c'était le problème!

2
répondu Daniel 2015-08-18 14:08:26

la section ci-dessous ajoute à votre site web.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>
2
répondu Jaydeep Shil 2015-09-04 05:42:08

si l'erreur disparaît localement et apparaît toujours sur le serveur, la solution qui fonctionne avec moi est de supprimer le dossier bin et les paquets.config et web.config et recharger ces fichiers

2
répondu Ahmad Alaa 2015-09-09 06:26:43

il suffit de vérifier la version de Newtonsoft.Json Newtonsoft properties

alors vous devez ajouter cette version dans votre configuration web (dans mon cas 8.0.0) web config

2
répondu Gerald Stanley Padgett Espinoz 2016-03-01 17:01:50