251 votes

Impossible de charger le fichier ou l'assemblage 'Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'.

J'obtiens l'erreur suivante

System.IO.FileLoadException : Impossible de charger le fichier ou l'assemblage 'Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' ou l'une de ses dépendances. La définition du manifeste de l'assemblage situé à l'adresse définition du manifeste de l'assemblage localisé ne correspond pas à la référence. (Exception de HRESULT : 0x80131040)

pour ma construction CI

Solution que j'ai essayée

<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 non plus fonctionné

0 votes

L'erreur signifie que .NET n'a pas pu trouver le Json.NET bibliothèque. L'avez-vous installé ?

26 votes

Exactement le même problème - ça me rend fou. Faites-moi savoir si vous trouvez une solution

0 votes

En fait, pour moi, ajouter ce que vous avez essayé a résolu le problème.

249voto

bobah75 Points 367

Dans la console du gestionnaire de paquets, exécutez : Update-Package –reinstall Newtonsoft.Json .

UPDATE

J'avais initialement posté ce message en tant que commentaire, mais comme @OwenBlacker l'a suggéré, je vais simplement le mettre ici :

Si vous obtenez toujours une erreur après avoir fait cela, alors ce qui a fonctionné pour moi, c'est que j'ai supprimé le fichier Json.Net <dependentAssembly> section de mon .config fichier. La réinstallation le ramène s'il n'est pas là et apparemment vous devez le supprimer. Jusqu'à ce qu'il y ait une solution normale dans le paquet lui-même, j'ai bien peur que cette étape manuelle soit indispensable.

Note : Veuillez lire les commentaires ci-dessous avant de procéder à cette opération.

Selon le commentaire de René ci-dessous SOYEZ PRÊTS que la commande postée dans la réponse réinstallera le paquet dans chaque projet de votre solution. Donc, si vous utilisez le paquet Newtonsoft.Json dans plusieurs projets et peut-être dans des versions différentes, la simple exécution de la commande ci-dessus peut avoir des conséquences indésirables.

9 votes

Pour le bien de tous ceux qui lisent ceci : J'ai fait ça et j'ai toujours l'erreur. Puis je l'ai résolu d'une manière ou d'une autre : Étonnamment, j'ai dû supprimer Json.Net <dependentAssembly> section de mon .config fichier. La réinstallation le ramène s'il n'est pas là et apparemment vous devez le supprimer. Jusqu'à ce qu'il y ait une solution normale dans le paquet lui-même, j'ai bien peur que cette étape manuelle soit indispensable.

0 votes

@OferZelig Vous devriez poster cette réponse séparément, afin qu'elle puisse obtenir les votes positifs (et, plus important encore, une attention accrue). Notamment parce que cela a fonctionné pour moi aussi :)

0 votes

Merci à @OwenBlacker. Mais comme il y a déjà beaucoup de réponses, la mienne va se perdre. Et cette réponse est plutôt bonne, c'est juste que si elle ne fonctionne pas alors mon commentaire la "complète". Tu sais quoi ? Je pense que je vais juste éditer la réponse originale. C'est plus important que de gagner sa propre réputation.

128voto

ZeroDotNet Points 117

Pour tous ceux qui ont des problèmes avec la version v4.5 de Newtonsoft.Json, essayez d'utiliser ceci 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 le configuration de votre fichier de configuration n'a pas d'attribut namespace (comme le suggère le document https://stackoverflow.com/a/12011221/150370 ). Sinon, assemblyBinding seront ignorées.

3 votes

Pour moi, supprimer manuellement le contenu du dossier bin après le nettoyage (qui ne le vide pas) a fait l'affaire après avoir appliqué cette réponse.

0 votes

Merci beaucoup pour ça ! :)

0 votes

Fonctionne très bien ! En date du 7/4/15, la version actuelle de Newtonsoft.Json est 7.0.0, donc newVersion="6.0.0.0" doit être changé en newVersion="7.0.0.0" ou la version que vous utilisez

24voto

Karl Hoaglund Points 1

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

uninstall-package newtonsoft.json -force

install-package newtonsoft.json -version "5.0.6"

El -force dans la première commande est nécessaire pour forcer la désinstallation. Les dépendances avec d'autres assemblages empêchent la désinstallation sans elle.

0 votes

Ça a marché comme un charme. J'avais l'erreur dans mon projet MVC 4. J'ai failli passer au sérialiseur natif.

0 votes

Merci, j'avais juste besoin de changer -version "5.0.6" en -pre : install-package newtonsoft.json -pre

24voto

MiMo Points 7077

J'ai résolu le problème en ajoutant cette redirection obligatoire à mon fichier .config :

<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 aller de 4.5 à 6.0, et non l'inverse.

0 votes

Oui, cela a résolu mon problème. C'est étrange la quantité de problèmes que JSON.NET cause mais une fois qu'il fonctionne, c'est une machine de rêve. Merci +1

0 votes

Votre extrait de code m'a fait réaliser qu'il manquait l'élément 'assemblyBinding'. Merci

22voto

BrunoLM Points 26573

Je pense que vous pointez vers la mauvaise cible, changez-la en 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>

Cela devrait fonctionner.

1 votes

Umbraco 7 nécessitait la version 4.5.0.0, ce qui a permis de le rendre opérationnel.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X