Choses que j'ai essayées après avoir cherché:
dans Web.Config mettez une liaison sur l'ancienne version:
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.1.0" />
</dependentAssembly>
Editez mon fichier .csproj pour vous assurer qu'il n'y a qu'une seule référence Newtonsoft
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.6.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
<SpecificVersion>False</SpecificVersion>
<Private>True</Private>
</Reference>
Recherchez sur chaque ordinateur Newtonsoft.Json.dll, supprimez toutes les versions non 6.0.1 et supprimez le contenu de mon dossier temporaire
Réparer/réinstaller le paquet dans la console du gestionnaire de nuget
Il réussit à construire, mais obtient l'erreur en allant sur le site.
MODIFIER
ok, alors j’ai essayé de réinstaller comme chaque paquet de nugets, et il semble avoir rajouté la version 4.5 du fichier newtonsoft.json.dll, mais j’obtiens la même erreur. Le cadre cible de mon projet est .NET 4.5.1 et voici la trace de la pile que je reçois maintenant:
Erreur serveur dans l'application '/'
Impossible de charger le fichier ou l'assembly 'Newtonsoft.Json' ou l'une de ses dépendances. La définition du manifeste de l'Assemblée localisée ne correspond pas à la référence de l'Assemblée. (Exception de HRESULT: 0x80131040)
Description: une exception non gérée s'est produite lors de l'exécution de la demande Web en cours. Consultez la trace de la pile pour plus d’informations sur l’erreur et son origine dans le code.
Détails des exceptions: System.IO.FileLoadException: impossible de charger le fichier ou l'assembly 'Newtonsoft.Json' ou l'une de ses dépendances. La définition du manifeste de l'Assemblée localisée ne correspond pas à la référence de l'Assemblée. (Exception de HRESULT: 0x80131040)
Erreur de source:
Une exception non gérée a été générée lors de l'exécution de la requête Web en cours. Les informations concernant l'origine et l'emplacement de l'exception peuvent être identifiées à l'aide de la trace de pile d'exceptions ci-dessous.
Suivi de la charge d'assemblage: Les informations suivantes peuvent être utiles pour déterminer pourquoi le fichier 'Newtonsoft.Json' de l'assembly n'a pas pu être chargé.
=== Informations d'état préalables à la liaison === LOG: DisplayName = Newtonsoft.Json (Partiel) WRN: Des informations de liaison partielles ont été fournies pour une assemblée: WRN: Nom de l'assembly: Newtonsoft.Json | Identifiant de domaine: 2 WRN: une liaison partielle se produit lorsqu'une partie seulement du nom d'affichage de l'assembly est fournie . WRN: le classeur pourrait charger un assemblage incorrect . WRN: Il est recommandé de fournir une identité textuelle entièrement spécifiée à l’Assemblée, WRN: qui se compose du nom simple, de la version, de la culture et du jeton de clé publique . WRN: voir le livre blanc http://go.Microsoft.com/fwlink/?LinkId=109270 pour plus d'informations et des solutions communes à ce problème . LOG: Appbase = fichier: /// c:/utilisateurs/utilisateur/documents/visual studio 2013/Projets/foo/bar / LOG: Initial PrivatePath = c:\utilisateurs\utilisateur\documents\visual studio 2013\Projets\foo\bar\bin Assemblée appelante: (Inconnu) . === LOG: Cette liaison commence dans le contexte de chargement par défaut . LOG: Utilisation du fichier de configuration de l'application: c:\utilisateurs\utilisateur\documents\visual studio 2013\Projets\foo\bar\web.config LOG: Utilisation du fichier de configuration de l'hôte: C:\Utilisateurs\utilisateur\Documents\IISExpress\config\aspnet.config LOG: Utilisation du fichier de configuration de la machine à partir de C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config . LOG: La stratégie n'est pas appliquée à la référence pour le moment (liaison Assembly privée, personnalisée, partielle ou localisée) . LOG: tentative de téléchargement du nouveau fichier URL: /// C:/Utilisateurs/utilisateur/AppData/Local/Temp/1/Fichiers ASP.NET temporaires/root/48686d37/9d7a6572/Newtonsoft.Json.DLL . LOG: Tentative de téléchargement du nouveau fichier URL: /// C:/Utilisateurs/utilisateur/AppData/Local/Temp/1/Fichiers ASP.NET temporaires/root/48686d37/9d7a6572/Newtonsoft.Json/Newtonsoft.Json.DLL . LOG: tentative de téléchargement du nouveau fichier URL: /// c:/utilisateurs/utilisateur/documents/visual studio 2013/Projets/foo/bar/bin/Newtonsoft.Json.DLL . LOG: Utilisation du fichier de configuration de l'application: c:\utilisateurs\utilisateur\documents\visual studio 2013\Projets\foo\bar\web.config LOG: Utilisation du fichier de configuration de l'hôte: C:\Utilisateurs\utilisateur\Documents\IISExpress\config\aspnet.config LOG: Utilisation du fichier de configuration de la machine à partir de C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config . LOG: Redirect trouvé dans le fichier de configuration de l'application: 4.5.0.0 redirigé vers 6.0.1.0 . LOG: Référence post-stratégie: Newtonsoft.Json, version = 6.0.1.0, Culture = neutre, PublicKeyToken = 30ad4fe6b2a6aeed LOG: tentative de téléchargement du nouveau fichier URL: /// C:/Utilisateurs/utilisateur/AppData/Local/Temp/1/Fichiers ASP.NET temporaires/root/48686d37/9d7a6572/Newtonsoft.Json.DLL . LOG: tentative de téléchargement du nouveau fichier URL: /// C:/Utilisateurs/utilisateur/AppData/Local/Temp/1/Fichiers ASP.NET temporaires/root/48686d37/9d7a6572/Newtonsoft.Json/Newtonsoft.Json.DLL . LOG: tentative de téléchargement du nouveau fichier URL: /// c:/utilisateurs/utilisateur/documents/visual studio 2013/Projets/foo/bar/bin/Newtonsoft.Json.DLL . WRN: la comparaison du nom d'assembly a abouti à la non-concordance: version majeure ERR: Impossible de terminer la configuration de l'assembly (hr = 0x80131040). Sondage terminé.Trace de la pile:.
[FileLoadException: impossible de charger le fichier ou l'assembly 'Newtonsoft.Json' ou l'une de ses dépendances. La définition du manifeste de l'Assemblée localisée ne correspond pas à la référence de l'Assemblée. (Exception de HRESULT: 0x80131040)]
[FileLoadException: impossible de charger le fichier ou l'assembly 'Newtonsoft.Json, Version = 6.0.1.0, Culture = neutre, PublicKeyToken = 30ad4fe6b2a6aeed' ou l'une de ses dépendances. La définition du manifeste de l'Assemblée localisée ne correspond pas à la référence de l'Assemblée. (Exception de HRESULT: 0x80131040)] System.Reflection.RuntimeAssembly._nLoad (AssemblyName nom_fichier, String codeBase, preuve assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark, empilage intempestif System.Reflection.RuntimeAssembly.nLoad (AssemblyName nom_fichier, String codeBase, preuve assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark et stackMark, pour plus de détails. System.Reflection.RuntimeAssembly.InternalLoadAssemblyName (AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, System.Reflection.RuntimeAssembly.InternalLoad (String assemblyString, Evidence assemblySecurity, StackCrawlMark & stackMark, IntPtr pPrivHostBinder, Boolean pourIntrospection) +77 System.Reflection.RuntimeAssembly.InternalLoad (String assemblyString, Evidence assemblySecurity, StackCrawlMark & stackMark, Boolean forIntrospection) +16 System.Reflection.Assembly.Load (String assemblyString) +28 System.Web.Configuration.CompilationSection.LoadAssemblyHelper (String assemblyName, Boolean starDirective) +38
[ConfigurationErrorsException: impossible de charger le fichier ou l'assembly 'Newtonsoft.Json, Version = 6.0.1.0, Culture = neutre, PublicKeyToken = 30ad4fe6b2a6aeed' ou l'une de ses dépendances. La définition du manifeste de l'Assemblée localisée ne correspond pas à la référence de l'Assemblée. (Exception de HRESULT: 0x80131040)] System.Web.Configuration.CompilationSection.LoadAssemblyHelper (String assemblyName, Boolean starDirective) +752 System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory () +218 System.Web.Configuration.CompilationSection.LoadAssembly (AssemblyInfo ai) +130 System.Web.Compilation.BuildManager.GetReferencedAssemblies (CompilationSection compConfig) +170 System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies () +91 System.Web.Compilation.BuildManager.CallPreStartInitMethods (String preStartInitListPath, Boolean & isRefAssemblyLoaded) +285 System.Web.Compilation.BuildManager.ExecutePreAppStart () +153 System.Web.Hosting.HostingEnvironment.Initialize (applicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HébergementEnvironmentParamètres, hébergement, Paramètres, stratégieLevel, stratégieLevel, Exception appDomainCreationException +516
[HttpException (0x80004005): Impossible de charger le fichier ou l'assembly 'Newtonsoft.Json, Version = 6.0.1.0, Culture = neutre, PublicKeyToken = 30ad4fe6b2a6aeed' ou l'une de ses dépendances. La définition du manifeste de l'Assemblée localisée ne correspond pas à la référence de l'Assemblée. (Exception de HRESULT: 0x80131040)] System.Web.HttpRuntime.FirstRequestInit (contexte HttpContext) +9913572 System.Web.HttpRuntime.EnsureFirstRequestInit (contexte HttpContext) +101 System.Web.HttpRuntime.ProcessRequestNotificationPrivate (IIS7WorkerRequest wr, contexte HttpContext) +254
Informations de version: Microsoft .NET Framework Version: 4.0.30319; Version ASP.NET: 4.0.30319.18408
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18408
Ok, je pense que je dois le faire fonctionner maintenant. J'ai supprimé chaque fichier Newtonsoft.Json.dll de ma machine qui n'était pas la version la plus récente que je pouvais trouver, je me suis assuré d'avoir la dernière version dans NuGet. J'ai laissé les changements dans le web.config et le .csproj. Maintenant, je suis sur une autre erreur, donc ça doit marcher ..
Pour résoudre ce problème, je me suis assuré que tous mes projets utilisaient la même version en exécutant la commande suivante et en vérifiant les résultats:
update-package Newtonsoft.Json -reinstall
Et, enfin, j'ai supprimé les éléments suivants de mon web.config:
<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>
Si vous voulez vous assurer que tous vos packages Newtonsoft.Json sont identiques à la version same , vous pouvez spécifier la version de la manière suivante:
update-package Newtonsoft.Json -version 6.0.0 -reinstall
J'utilise Newtonsoft.Json v6.0.3, mais voici ce que je devais faire dans mon fichier Web.config:
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
Notez que même si j'utilise 6.0.3, je devais mettre newVersion="6.0.0.0"
Dans mon fichier packages.config, j'ai:
<package id="Newtonsoft.Json" version="6.0.3" targetFramework="net45" />
J'ai essayé ce qui suit après m'être assuré que la version de mon ordinateur était la même dans tous les emplacements et que mes projets pointaient tous vers le même chemin de référence. Je m'étais également assuré que la liaison de l'ancienne version était la leur et liée à la version actuelle de dll que j'avais.
Je travaille dans un environnement avec un framework strict et l'équipe de frameworks perturbe souvent le versioning avec les différentes dll.
J'ai résolu ce problème en exécutant la console du gestionnaire de paquets dans visual studio (2013). De là, j'ai exécuté la commande suivante:
update-package Newtonsoft.Json -reinstall
suivi par
update-package Newtonsoft.Json
Ceci a traversé et mis à jour tous mes fichiers de configuration et les fichiers de projet pertinents. Les forçant tous à la même version de la dll. Ce qui était initialement la version 4.5 avant de mettre à jour à nouveau pour obtenir le dernier.
J'ai eu le même message d'erreur et, comme vous l'avez mentionné, il était dû à différentes versions du fichier Newtonsoft.Json.dll référencé.
Certains projets de ma solution MVC ont utilisé le package NuGet pour la version 4 de cette dll.
J'ai ensuite ajouté un package NuGet (pour Salesforce dans mon cas) qui apportait Newtonsoft.Json version 6 avec elle en tant que dépendance de l'un des projets. C'est ce qui a déclenché le problème pour moi.
Pour nettoyer les choses, j'ai utilisé la section Updates du gestionnaire de packages NuGet pour la solution (menu Outils ou clic droit de la solution) pour mettre à jour le package Json.Net dans l'ensemble de la solution, de sorte qu'il s'agissait de la même version pour tous les projets.
Après cela, je viens de vérifier les fichiers de configuration d'application pour m'assurer que toutes les lignes de redirection de liaison allaient dans la version choisie, comme indiqué ci-dessous.
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
J'ai essayé les démarches d'Oleg et ils ont travaillé pour ma même situation.
Pas:
Exécutez update-package Newtonsoft.Json -reinstall
dans le gestionnaire de packages.
Supprimez votre bin
en activant l'affichage des fichiers cachés et en supprimant le dossier bin
.
Fermez votre Visual Studio et rouvrez-le.
Maintenant, relancez votre projet. Je crois que ça devrait aller!
Ce qui m'a réellement aidé, c’est d’activer l’option Resharper build et d’utiliser l’option de reconstruction de Visual Studio dans mon projet.
Dans mon cas, c'était juste une question de:
Tools -> NuGet Package Manager -> Package Manager Settings -> Clear Cache
Le problème a été provoqué lorsque j'ai remappé un dossier TFS.
En commentant cette partie de mon web.config a résolu mon problème:
<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>
Mais bien sûr, vous devez vous assurer d'avoir mis à jour ou d'avoir la bonne version en procédant ainsi dans la console de votre gestionnaire de paquets:
update-package Newtonsoft.Json -reinstall
Vous pouvez résoudre le problème en ajoutant des lignes ci-dessous dans le fichier 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-8.0.0.0" newVersion="8.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
si vous travaillez avec une sorte de Subversion: supprimez le projet et re-téléchargez-le, cela a fonctionné pour moi: S
Je l'ai résolu en supprimant la version inférieure de Newtonsoft.json.dll dans le dossier bin et ajouté Newtonsoft.json.dll version 6.0.0.0 et supprimé les éléments web.config suivants
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"/>
<bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="5.0.8"/>
</dependentAssembly>
Je ne sais pas pourquoi, mais dans mon cas, même si je supprime le dossier bin du projet, lorsque je construis le projet, il copie l'ancienne version de newtonsoft.json, j'ai copié le fichier DLL de la nouvelle version à partir du dossier packages et le problème est résolu pour l'instant.
depuis Outils >> NuGet Package Manager >> Gérer les packages pour la solution mettre à jour Newtonsoft.Json de toutes les solutions vers la dernière version
Aucune des réponses, y compris celle cochée, ne fonctionnait pas pour moi.
La solution était beaucoup plus simple. J'ai d'abord enlevé les références de ma couche BUS. Supprimez ensuite les dll du projet (pour vous assurer qu'il a disparu), puis réinstallez JSON.NET à partir de paquets de nugets. Et la partie la plus délicate était: "éteindre et rallumer".
Je viens de redémarrer Visual Studio, et ça a fonctionné!
Donc, si vous essayez tout ce que vous pouvez et que vous ne pouvez toujours pas résoudre le problème, essayez simplement d’activer et de réactiver Visual Studio, cela pourrait aider.
Dans certains cas, si vous supprimez vos dossiers Bin
et Obj
, le problème sera résolu.
Si aucune de ces solutions ne fonctionne, veuillez vérifier cette réponse:
https://stackoverflow.com/a/12011221/150370
(TL; DR: supprime l'espace de noms XML de la balise configuration
de votre fichier de configuration. Sinon, les redirections de liaison seront ignorées)
J'ai eu le même problème avec dotnet core et j'ai réussi à le réparer en effaçant le cache de NuGet.
Ouvrez le powershell et entrez la commande suivante.
dotnet nuget locals all --clear
Ensuite, j'ai fermé Visual Studio, je l'ai rouvert et j'ai entré la commande suivante dans la console de Package Manager:
Update-Package
NuGet devrait maintenant restaurer tous les paquets et afficher à nouveau le cache de nuget.
Après cela, j'ai pu construire et démarrer mon webapi dotnet core dans un conteneur Linux.
J'ai eu le même problème sur un projet test qui faisait référence à un projet MVC 5. Cela s'est produit après ma fusion avec un projet MVC 5. Je l'ai corrigé en installant les mises à jour de Visual studio 2012 comme expliqué ici dans la réponse d'Andre.
Aucune de ces options ne fonctionnait pour moi, à la fin c'était;
Test> Paramètres de test> * .testrunconfig
Je devais ajouter une nouvelle ligne
<DeploymentItem filename="packages\Newtonsoft.Json.4.5.8\lib\net40\Newtonsoft.Json.dll" />
Assurez-vous que le chemin et la version sont corrects pour votre configuration.
Voici ma solution à ce problème, assurez-vous que le numéro de version dans appconfig ou packageconfig est identique à la version de référence dans vos références . Voir ici
J'éprouvais le problème pour une autre raison et je l'ai résolu. Cela fonctionnait pendant le débogage, mais cela ne fonctionnait pas lorsque je l'ai copié. car "exename.config" dans le dossier de construction échoue lorsque vous le supprimez
Très bien, je suppose que la chose à faire est d’ajouter ma réponse ici à cette longue liste par opposition à la création d’une question dupliquée ...
Si vous obtenez cela en 2019, en utilisant .NET Core 3.0 (Aperçu pour le moment), la solution consiste à vous assurer que tous les projets ciblent la même version .NET Core (dans mon cas, la version 3.0). Je pense que j'ai eu un projet dans la solution ciblant 2.1 et le reste étaient 2,2 donc je pourrais probablement avoir collé avec 2.2 ...
Je n'ai même pas installé Newtonsoft.Json dans aucun des projets, et l'ajouter naturellement n'a pas résolu le problème.
Si vous avez des bibliothèques de classes .NET Standard ou w/e dans votre solution, elles n'ont pas besoin d'être sur la même version, bien qu'elles soient probablement les plus récentes. Par exemple, mes bibliothèques de classes .NET Standard sont sur 2.2 car il n’existe pas encore de .NET Standard 3.0.
J'avais exactement le même problème et la bibliothèque par défaut de Visual Studio 13 pour moi était de 4,5; j'ai donc deux solutions. On peut supprimer la référence à cela dans le fichier webconfig. C'est un dernier recours et ça marche.
Le message d'erreur indique qu'il y a un problème à cet emplacement /Projects/foo/bar/bin/Newtonsoft.Json.DLL. où la DLL est! Une vérification de base des propriétés m'a indiqué qu'il s'agissait de la version 4.5.0.0 ou similaire. J'ai donc modifié la configuration Web afin qu'elle ressemble jusqu'à 4,5 et que je l'utilise 4,5.
J'ai rencontré ce problème parce que j'avais: le projet A (un fichier .exe) fait référence au projet B (un fichier .dll portable). A & B avait différentes versions de JSON.Net et il y avait donc un conflit de chargeur. Une fois que toutes les versions de JSON.net ont été identiques, cela a fonctionné. (C’est en fait ce que font certaines des solutions ci-dessus - je ne fais que dire pourquoi cela fonctionne)
J'ai eu le même problème. J'ai créé un projet Web api, puis mis à niveau de .net 4.5.1 à .net 4.6.1. La fermeture de l'EDI, l'arrêt d'IIS et la suppression du contenu du fichier C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\dir ont résolu le problème.
HTH
la solution qui a résolu mon problème pour cela est
références goto-> clic droit Newtonsoft.json - Propriétés goto et vérification de la version
cette même version devrait être en
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-YourDllVersion" newVersion="YourDllVersion" />
</dependentAssembly>
J'ai eu du mal avec ce projet récent et plus ancien.
J'ai réussi à localiser le problème après avoir vérifié quelle version de la dll était réellement dans le dossier bin.
J'avais un script post-build qui copiait des assemblys dépendants d'un dossier de bibliothèque dll dans le dossier bin. Une configuration commune des jours avant nuget.
Ainsi, chaque fois que je construisais, le script post-build remplaçait la version correcte de Json.net par la plus ancienne.
Dans mon cas, le message d'erreur était " version 6.0.0 ", mais cette version n'est pas disponible pour l'installation, j'ai donc installé le " 6.0.1 version " sur mon projet et résolu mon problème. problème.
install-package Newtonsoft.Json -Version 6.0.1 -Project MyProjectX
Ce problème n'a pas été résolu pour moi en actualisant les packages NuGet ou en effectuant un "nettoyage" du projet. Pour résoudre ce problème, effacez manuellement le dossier "obj".
Étapes faciles . (1) Exécutez "update-package Newtonsoft.Json -reinstall" dans le gestionnaire de packages.
(2) Supprimez votre bin en activant l'affichage des fichiers cachés et en supprimant le dossier bin.
(3) Fermez votre studio visuel et rouvrez-le.
(4) Maintenant, relancez votre projet ... Je pense que ça devrait aller
mon problème était la newVersion dans ce code dans web.config n'était pas correct
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.1.0" />
vous pouvez voir la version du paquet Newtonsoft.Json dans le gestionnaire de paquets de nuget et l'utiliser.