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
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.
à 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.
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>
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.
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
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.
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:
- 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
.
-
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).
-
retirer tous les paquets
Newtonsoft.Json
de la solution.uninstall-package newtonsoft.json -force
-
mettre à jour toutes les
Newtonsoft.Json
versions dans tous lespackages.config
fichiers, comme<package id="Newtonsoft.Json" version="7.0.1" targetFramework="net451" />
-
réinstaller
Newtonsoft.Json
de "Console du Gestionnaire de paquets" avec:install-package newtonsoft.json
-
reconstruire la solution
(facultatif) 7. Si vous avez changé le projet de démarrage, retourner
uninstall-package newtonsoft.json -force
install-package newtonsoft.json
a Fait le tour pour moi :)
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.
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 .
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
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.
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.
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.
<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")
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.
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.
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>
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 :)
- désinstaller-paquet newtonsoft.JSON-force
- install-package newtonsoft.json
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.
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.
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.
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.
rien de ce qui est en haut ne m'a aidé, mais ce qui a été corrigé est le suivant:
- supprimer toutes les liaisons de dépendance Dans app.config (à partir de l'app.fichiers de configuration dans la solution)
- exécuter la commande suivante à partir de "console du Gestionnaire de paquets"
Get-Projet | Ajouter-BindingRedirect
- reconstruire
référence: http://blog.myget.org/post/2014/11/27/Could-not-load-file-or-assembly-NuGet-Assembly-Redirects.aspx
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
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>
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!
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>
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
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