Impossible de charger le fichier ou l'assembly 'Newtonsoft.Json' ou l'une de ses dépendances. La définition du manifeste ne correspond pas à la référence d'assembly

216

Ce que j'ai essayé après avoir cherché:

  1. dans Web.Config a mis 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>
  2. Modifiez 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>
  3. Rechercher sur mon ordinateur chaque Newtonsoft.Json.dll et supprimer toutes les versions non 6.0.1 et supprimer le contenu de mon dossier temporaire

  4. Réparer / réinstaller le package dans la console du gestionnaire de nuget

Il réussit à construire, mais obtient l'erreur en allant sur le site.

ÉDITER

ok, alors j'ai essayé de réinstaller comme chaque paquet nuget, et il semble avoir ajouté la version 4.5 du newtonsoft.json.dll, mais j'obtiens la même erreur. Le travail cible de mon projet est .NET 4.5.1 et voici la trace de la pile que j'obtiens maintenant:

Erreur serveur dans l'application '/'

Impossible de charger le fichier ou l'assembly Newtonsoft.Jsonou l'une de ses dépendances. La définition du manifeste de l'assembly localisé ne correspond pas à la référence de l'assembly. (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. Veuillez consulter la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

Détails de l'exception:: System.IO.FileLoadExceptionimpossible de charger le fichier ou l'assembly Newtonsoft.Jsonou l'une de ses dépendances. La définition du manifeste de l'assembly localisé ne correspond pas à la référence de l'assembly. (Exception de HRESULT: 0x80131040)

Erreur source:

Une exception non gérée a été générée lors de l'exécution de la demande Web actuelle. 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.

Trace de chargement de l'assemblage: les informations suivantes peuvent être utiles pour déterminer pourquoi l'assemblage Newtonsoft.Jsonn'a pas pu être chargé.

=== Pre-bind state information ===
LOG: DisplayName = Newtonsoft.Json
(Partial)
WRN: Partial binding information was supplied for an assembly:
WRN: Assembly Name: Newtonsoft.Json | Domain ID: 2
WRN: A partial bind occurs when only part of the assembly display name is provided.
WRN: This might result in the binder loading an incorrect assembly.
WRN: It is recommended to provide a fully specified textual identity for the assembly,
WRN: that consists of the simple name, version, culture, and public key token.
WRN: See whitepaper http://go.microsoft.com/fwlink/?LinkId=109270 for more information and common solutions to this issue.
LOG: Appbase = file:///c:/users/user/documents/visual studio 2013/Projects/foo/bar/
LOG: Initial PrivatePath = c:\users\user\documents\visual studio 2013\Projects\foo\bar\bin
Calling assembly : (Unknown).
 ===
LOG: This bind starts in default load context.
LOG: Using application configuration file: c:\users\user\documents\visual studio 2013\Projects\foo\bar\web.config
LOG: Using host configuration file: C:\Users\user\Documents\IISExpress\config\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///c:/users/user/documents/visual studio 2013/Projects/foo/bar/bin/Newtonsoft.Json.DLL.
LOG: Using application configuration file: c:\users\user\documents\visual studio 2013\Projects\foo\bar\web.config
LOG: Using host configuration file: C:\Users\user\Documents\IISExpress\config\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Redirect found in application configuration file: 4.5.0.0 redirected to 6.0.1.0.
LOG: Post-policy reference: Newtonsoft.Json, Version=6.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///c:/users/user/documents/visual studio 2013/Projects/foo/bar/bin/Newtonsoft.Json.DLL.
WRN: Comparing the assembly name resulted in the mismatch: Major Version
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.

Trace de la pile:

[FileLoadException: Could not load file or assembly 'Newtonsoft.Json' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]

[FileLoadException: Could not load file or assembly 'Newtonsoft.Json, Version=6.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
       System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
       System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +34
       System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +152
       System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +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: Could not load file or assembly 'Newtonsoft.Json, Version=6.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from 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, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +516

[HttpException (0x80004005): Could not load file or assembly 'Newtonsoft.Json, Version=6.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
       System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9913572
       System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101
       System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18408
noobieDev
la source
2
Ok, je pense que je l'ai fait fonctionner maintenant. J'ai supprimé chaque Newtonsoft.Json.dll sur ma machine qui n'était pas la dernière version que j'ai pu trouver, je me suis assuré que j'avais la dernière version dans NuGet, et je l'ai créée et j'ai vérifié que c'était la dernière dans le dossier bin, et J'ai laissé les modifications dans le web.config et le .csproj. Maintenant, je suis sur une autre erreur, donc ça doit fonctionner ...
noobieDev
1
Ajoutez la réponse à votre question pour que les gens puissent voir qu'elle a été résolue? Et marquez-le comme la solution
Per Hornshøj-Schierbeck
2
J'ai une version de ce problème même aujourd'hui (01/03/2016) avec la version 8.0.2. Il essaie de charger la version 6.0.0. Aucun fichier dans ma solution ne fait référence à 6.0.0. Il n'y a pas de version 6.0.0. .dll n'importe où dans ma zone de solution. J'ai plusieurs copies de newtonsoft.json.dll sur mon ordinateur, de différentes versions, elles sont utilisées par des logiciels tiers installés avec lesquels je ne veux pas jouer. Mis à part la suppression de toutes ces copies, j'ai essayé toutes les solutions mentionnées dans ce fil entier, et rien n'a fonctionné.
Shavais
1
J'ai également rencontré ce message d'erreur de newtonsoft-json lorsque j'ai ajouté la référence d'un projet à un autre projet mais .Net Framework dans les projets était différent après avoir fait le même .Net Framework sur les deux problèmes corrigés. Mais je ne pouvais pas comprendre au lieu du message d'erreur Framework pourquoi il montre une erreur liée à newtonsoft-json.
Sameer
1
Installez la même version de Newtonsoft.Json dans tous vos projets, même s'ils ne l'utilisent pas.
rubStackOverflow

Réponses:

274

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 la même version, vous pouvez spécifier la version comme suit :

update-package Newtonsoft.Json -version 6.0.0 -reinstall
user1477388
la source
17
L'exécution de la commande de réinstallation a fonctionné pour moi. Je n'ai pas eu besoin de modifier web.config.
Keith
4
J'ai juste dû ajouter la balise <dependentAssembly> pour se débarrasser de cette erreur.
Nicklas Møller Jepsen
3
J'ai dû fournir la version, mais omettre l'indicateur -reinstall pour le faire fonctionner dans mon cas.
anre
1
J'utilise la version récente 9.0.1 mais elle montrait la même erreur. J'ai ensuite vérifié la version dans le fichier csproj et c'était 9.0.0.0, ajouté cela à mon web.config et le problème a été résolu. 1. Assurez-vous que la version dans csproj est la même que dans web.config 2. Méfiez-vous des numéros de version, il peut indiquer x.0.1 lorsque la version réelle est x.0.0.0, x peut être 6 ou 9 ou quoi que ce soit .
Eugene
7
Notez que pour exécuter la commande dans VS2017, vous pouvez aller dans Outils -> Nuget Package Manager -> Package Manager Console
Rose
83

J'utilise Newtonsoft.Json v6.0.3, mais c'est 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, j'ai dû mettre en newVersion="6.0.0.0"

Dans mon fichier packages.config, j'ai:

<package id="Newtonsoft.Json" version="6.0.3" targetFramework="net45" />
CraigV
la source
1
Juste comme une note, j'ai essayé de désinstaller / supprimer / supprimer tout ce que je pouvais trouver qui avait à voir avec Newtonsoft.Json, puis en utilisant Nuget pour le réinstaller, mais recevais toujours l'erreur ci-dessus. Ce n'est que lorsque j'ai apporté les modifications que j'ai mentionnées que j'ai pu le faire fonctionner correctement.
CraigV
J'ai rencontré ce problème et j'ai utilisé le visualiseur de journal de liaison d'assemblage pour aider à le diagnostiquer. Le classeur d'assemblage signale le v6.0.3 Newtonsoft.Json.dll en tant que v6.0.0.0 afin que la redirection échoue lorsque je l'ai configuré en 6.0.3.
Jason Slocomb
La ligne "Note" m'aide. J'avais initialement 9.0.1.19813 comme newVersion dans le bindingRedirect puisque c'est ce que dit la DLL. Voici ce que j'ai maintenant: <Reference Include = "Newtonsoft.Json, Version = 9.0.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed, processorArchitecture = MSIL"> <SpecificVersion> False </SpecificVersion> </Reference> <dependentAssembly> <assemblyIdentity name = "Newtonsoft.Json" culture = "neutral" publicKeyToken = "30ad4fe6b2a6aeed" /> <bindingRedirect oldVersion = "0.0.0.0-9.0.0.0" newVersion = "9.0.0.0" /> </dependentAssembly>
Mark Seefeldt
62

J'ai essayé ce qui suit après avoir déjà vérifié que mon ordinateur avait la même version 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 la DLL que j'avais.

Je travaille dans un environnement avec un framework strict et l'équipe du framework bouleverse souvent le versioning avec les différentes DLL.

J'ai résolu ce problème en exécutant la console du gestionnaire de packages dans Visual Studio (2013). De là, j'ai exécuté la commande suivante:

update-package Newtonsoft.Json -reinstall

suivi par

update-package Newtonsoft.Json

Cela 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. Qui était initialement la version 4.5 avant de se mettre à jour pour obtenir la dernière version.

Samuel
la source
C'est la mise à jour qui a résolu le problème pour moi. Mon projet a été mis à jour vers Newtonsoft version 7.0.
id.ot
A travaillé pour moi. Après cela, il est important de noter pour vous assurer que votre fichier package.config et web.config ont des versions correspondantes.
TheValyreanGroup
A fonctionné pour moi lorsque vous avez terminé à partir de la console NuGet Package Manager merci!
Kbdavis07
25

J'ai eu le même message d'erreur et, comme vous l'avez mentionné, cela était dû au fait que différentes versions de Newtonsoft.Json.dll étaient référencées.

Certains projets de ma solution MVC utilisaient le package NuGet pour la version 4 de cette DLL.

J'ai ensuite ajouté un package NuGet (pour Salesforce dans mon cas) qui a apporté Newtonsoft.Json version 6 avec comme dépendance à 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 Mises à jour du gestionnaire de packages NuGet pour la solution (hors du menu Outils ou du bouton droit de la solution) pour mettre à jour le package Json.Net dans toute la solution, il s'agissait donc de la même version pour tous les projets.

Après cela, je viens de vérifier les fichiers App Config pour m'assurer que toutes les lignes de redirection de liaison iraient à la version choisie comme ci-dessous.

<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
S__
la source
Que faire si les DLL ont des dépendances pour différentes versions de Newtonsoft.Json pour la même application MVC? C'est là que je suis coincé.
Jeremy Ray Brown
Utilisez l'option Consolider dans le gestionnaire de packages NuGet pour vous assurer que les versions ne s'écartent pas.
niico
17

Ok, je pense que je l'ai fait fonctionner maintenant. J'ai supprimé tous les Newtonsoft.Json.dll sur ma machine qui n'étaient pas la dernière version que j'ai pu trouver, je me suis assuré que j'avais la dernière version dans NuGet, et je l'ai construite et je me suis assuré que c'était la dernière dans le dossier bin, et J'ai laissé les modifications dans le web.config et le .csproj. Maintenant, je suis sur une autre erreur, donc ça doit fonctionner ..

noobieDev
la source
2
Comment avez-vous procédé pour trouver tous les emplacements sur votre machine?
obaylis
j'ai également l'erreur lors de l'obtention du projet par le serveur de la fondation de l'équipe sur mon ordinateur. J'ajoute la référence de newtonsoft à ma solution.il n'a pas fonctionné. ensuite j'installe json.net (newtonsoft.json) via le gestionnaire de paquets nuget fonctionne bien.
Mohammad Sadiqur Rahman
il est à l'intérieur du nom du fichier du dossier bin - Newtonsoft.Json.dll Supprimez ce fichier et réinstallez le package ou installez simplement la version inférieure et réinstallez la version correcte à l'aide de NuGet-Solution
maddy
7

En le commentant, cette partie sur 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 que vous avez mis à jour ou que vous avez la bonne version en faisant cela dans votre console de gestionnaire de paquets:

update-package Newtonsoft.Json -reinstall
Willy David Jr
la source
4

J'ai essayé les étapes par Oleg, et ils ont travaillé pour ma même situation.

Pas:

  1. Exécutez update-package Newtonsoft.Json -reinstalldans le gestionnaire de packages.

  2. Supprimez votre binen activant l'affichage des fichiers cachés et en supprimant le bindossier.

  3. Fermez votre Visual Studio et rouvrez-le.

  4. Exécutez à nouveau votre projet. Je pense que ça devrait aller!

Matthew Cavallo
la source
4

Vous pouvez résoudre le problème en ajoutant les 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>
Jineesh Uvantavida
la source
3

Dans mon cas, il s'agissait simplement de:

Tools -> NuGet Package Manager -> Package Manager Settings -> Clear Cache

Le problème a été provoqué lorsque j'ai remappé un dossier TFS.

daniloquio
la source
3

Ce qui m'a réellement aidé, c'est de désactiver la génération de Resharper et d'utiliser l'option de reconstruction de VisualStudio sur mon projet.

Shaulian
la source
Comment as-tu fais ça?
Naomi
1
Dans les options de Resharper: Outils -> ReSharper Build -> Build Engine - choisissez "Visual Studio"
Shaulian
J'ai installé une version d'essai il y a quelque temps (environ un mois, je pense), puis j'ai également désactivé l'extension. Je ne le vois pas dans Tools, donc j'espère que ça va.
Naomi
3

depuis Tools >> NuGet Package Manager >> Manage Package for solution update Newtonsoft.Json de toutes les solutions vers la dernière version

Goda Kotb
la source
2

si vous travaillez avec une sorte de subversion: supprimez le projet et téléchargez-le à nouveau, cela a fonctionné pour moi: S

ch2o
la source
Long chemin mais j'ai dû le faire car aucune autre solution n'a fonctionné pour moi
Mike Resoli
2

J'ai eu le même problème sur un projet de test qui faisait référence à un projet MVC 5. Cela s'est produit après avoir fusionné 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'André.

  • Dans votre studio visuel, allez sur
    1. Outils> Extensions et mises à jour
    2. Sélectionnez "Mises à jour" dans la liste des accordéons à gauche.
    3. Sélectionnez "Mises à jour du produit".
    4. Mettre à jour vers la dernière version
Michael Kassa
la source
Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien de référence. Les réponses de lien uniquement peuvent devenir invalides si la page liée change
abarisone
Mon problème a été résolu avec cette solution merci! J'avais installé la version 8.0.1 et cela ne fonctionnait pas jusqu'à ce que je mette à jour la mise à jour VS2013 5
Devin Prejean
2

Je ne sais pas pourquoi, mais dans mon cas, même si je supprime le dossier bin du projet, lorsque je crée un projet, il copie l'ancienne version de newtonsoft.json, j'ai copié la dll de la nouvelle version du dossier packages et il résout pour l'instant.

mesut
la source
J'ai eu un problème similaire. Dans ma solution, j'ai un projet de test. Le projet de test obtenait la version 9 dans le bac, mais le projet que je testais avait la version 12. J'ai copié la version 12 du projet sous le dossier du bac de test dans le dossier du bac du test.
Josh Jay
2

Dans certains cas, si vous supprimez vos dossiers Binet Objrésoudra ce problème.

Ivan Ruski
la source
2

Très bien donc je suppose que la chose à faire est d'ajouter ma réponse ici à cette longue liste plutôt que de créer une question en double ...

Si vous obtenez cela en 2019, en utilisant .NET Core 3.0 (aperçu pour le moment), la solution est de vous assurer que tous les projets ciblent la même version de .NET Core (dans mon cas 3.0). Je pense que j'avais un projet dans la solution ciblant 2.1 et les autres étaient 2.2, donc j'aurais probablement pu m'en tenir à 2.2 ...

Je n'ai même pas Newtonsoft.Json installé dans aucun des projets, et naturellement leur ajouter ne résout pas 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 devraient probablement être la dernière que vous puissiez utiliser. Par exemple, mes bibliothèques de classes .NET Standard sont sur 2.2 car il n'y a pas encore de .NET Standard 3.0.

jspinella
la source
1

Aucune des réponses, y compris celle cochée, n'a fonctionné pour moi.

La solution était beaucoup plus simple. J'ai d'abord supprimé les références de ma couche BUS. Ensuite, supprimé les DLL du projet (pour vous assurer qu'il a disparu), puis réinstallé JSON.NET à partir des paquets de pépites. Et, la partie la plus délicate a été de "l'éteindre et de la rallumer".

Je viens de redémarrer Visual Studio, et là ça a marché!

Donc, si vous essayez tout ce qui est possible et que vous ne parvenez toujours pas à résoudre le problème, essayez simplement de désactiver et de réactiver Visual Studio, cela pourrait vous aider.

Zafer Sernikli
la source
2
Je pense que Simple était un sarcasme.
Worthy7
1

Si aucun de ces travaux, veuillez vérifier cette réponse:

https://stackoverflow.com/a/12011221/150370

( TL; DR : Supprimez l'espace de noms xml de la configurationbalise dans votre fichier de configuration. Sinon, les redirections de liaison seront ignorées)

Latorre allemand
la source
1

Je l'ai résolu en supprimant la version inférieure de Newtonsoft.json.dll dans le dossier bin et en ajoutant Newtonsoft.json.dll V6.0.0.0 et en supprimant 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>
Alok Kumar
la source
1

J'ai eu le même problème avec le noyau dotnet et j'ai réussi à le résoudre en effaçant le cache NuGet.

Ouvrez le PowerShell et entrez la commande suivante.

dotnet nuget locals all --clear

Ensuite, j'ai fermé Visual Studio, l'ai rouvert et entré la commande suivante dans la console du gestionnaire de packages:

Update-Package

NuGet devrait maintenant restaurer tous les packages et popultes le cache de nuget à nouveau.

Après cela, j'ai pu construire et démarrer mon webapi core dotnet dans un conteneur Linux.

datoml
la source
1

la solution qui a résolu mon problème est

références goto-> clic droit Newtonsoft.json - propriétés goto et vérifier la version

cette même version devrait être

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-YourDllVersion" newVersion="YourDllVersion" />
</dependentAssembly>
Er.Imran Shaikh
la source
1

Après des heures à lutter avec ça ... j'ai fait ce qui suit:

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-12.0.0.0" newVersion="12.0.0.0" />
    </dependentAssembly>

    <!-- other assemblies... -->

  </assemblyBinding>
</runtime>

La clé pour entrer le bon newVersion et oldVersion numéro est ouvert le projet Referencestrouver le package aller à ses propriétés ou cliqueralt + enter

Vous trouverez une section Versionqui, dans mon cas, était 12.0.0.0en cours 12.0.3lors de l'exploration avec Manage NuGet.

Vous devez donc choisir la version du package dans les propriétés de référence (dans mon cas 12.0.0.0)

Enfin, cleanet rebuildle projet (vous voudrez peut-être supprimer lebin etobj dossiers avant).

Vous pourriez rencontrer d'autres problèmes de dépendances de packages, je l'ai fait pour tous et ils ont fonctionné.

Ali Kleit
la source
0

Étapes faciles. (1) Exécutez "update-package Newtonsoft.Json -reinstall" dans le gestionnaire de packages.

(2) Supprimez votre bac en activant l'affichage des fichiers cachés et en supprimant le dossier bin.

(3) Fermez votre studio visuel et rouvrez-le.

(4) Exécutez à nouveau votre projet. Je crois que ça devrait aller

Odeyinka Olubunmi
la source
0

J'ai rencontré ce problème car j'avais: le projet A (un .exe de bureau) fait référence au projet B (un .dll portable). A & B avait différentes versions de JSON.Net, et il y avait donc un conflit de chargeur. Une fois que j'ai fait toutes les versions de JSON.net de la même façon, cela a fonctionné. (C'est en fait ce que font certaines des solutions ci-dessus - j'explique simplement pourquoi cela fonctionne)

Mike S
la source
0

J'ai eu du mal avec ce projet récemment et plus ancien.

J'ai réussi à localiser le problème après avoir vérifié quelle version de la DLL se trouvait réellement dans le dossier bin.

J'avais un script post-construction qui copiait les assemblys dépendants d'un dossier de bibliothèque dll dans le dossier bin. Une configuration courante des jours avant nuget.

Donc, à chaque fois que je construisais le script post-build, la bonne version de Json.net était remplacée par la plus ancienne

Fredrik Stolpe
la source
0

J'ai eu 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 2 solutions, l'une est de supprimer la référence à cela dans le fichier webconfig. C'est un dernier recours et cela fonctionne.

Le message d'erreur indique qu'il y a un problème à cet emplacement /Projects/foo/bar/bin/Newtonsoft.Json.DLL. où se trouve la DLL! Une vérification de propriété de base m'a dit qu'il s'agissait de la version 4.5.0.0 ou similaire, j'ai donc changé la configuration Web pour qu'elle soit jusqu'à 4.5 et j'utilise 4.5.

Mcole1976
la source
0

Aucune de ces options n'a fonctionné pour moi, à la fin c'était le cas;

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.

Daniel Haselden
la source
0

J'ai eu le même problème. J'ai créé un projet d'API Web, puis l'ai mis à niveau de .net 4.5.1 vers .net 4.6.1. La fermeture de l'IDE, l'arrêt d'IIS et la suppression du contenu du dossier C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files \ dir ont résolu le problème.

HTH

Développement de la caféine
la source
0

Ce problème n'a pas été résolu pour moi en actualisant les packages NuGet ou en effectuant un "nettoyage" sur le projet. Il a été résolu en effaçant manuellement le dossier "obj".

Alexander P. Brown
la source
0

Voici ma solution à ce problème, assurez-vous que le numéro de version dans appconfig ou packageconfig est le même que la version de référence dans vos références. Voir ici


la source