web-dev-qa-db-fra.com

Impossible de charger le fichier ou l'assembly 'Newtonsoft.Json, Version = 9.0.0.0, Culture = neutre, PublicKeyToken = 30ad4fe6b2a6aeed' ou l'une de ses dépendances

J'ai un projet WinJS précédemment construit sur Windows 8.1 à l'aide de VS 2013. 

Récemment, j'ai mis à niveau ce projet vers Universal Windows 10 en créant un projet Javascript universel sous Windows 10, puis j'ai ajouté tous mes fichiers de l'ancien projet. 

J'ai Windows Runtime Components et également Class Library pour SQLite. 

J'ai ajouté Universal Windows Runtime Component et Universal Class Library et copié tous mes fichiers de l'ancien projet vers les emplacements respectifs.

D'une certaine manière, j'ai réussi à supprimer toutes les erreurs de construction. 

J'ai installé tous les requis SQLite-net, SQLite pour Universal Windows Platform, Newtonsoft, etc.

Mais lorsque j'exécute l'application et appelle une méthode native dans Windows Runtime Component, cela génère des erreurs étranges telles que:

An exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.ni.dll but was not handled in user code.

Additional information: Could not load file or Assembly 'Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The system cannot find the file specified.

 enter image description here

La version de Newtonsoft est: 9.0.1

Mon fichier project.json de Windows Runtime Component contient les éléments suivants:

  {
  "dependencies": {
    "Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0",
    "Newtonsoft.Json": "9.0.1"
  },
  "frameworks": {
    "uap10.0": {}
  },
  "runtimes": {
    "win10-arm": {},
    "win10-arm-aot": {},
    "win10-x86": {},
    "win10-x86-aot": {},
    "win10-x64": {},
    "win10-x64-aot": {}
  }
}

Ma version de Visual Studio est:

 enter image description here

J'ai essayé d'enlever tout le JSON de Newtonsoft et de le réinstaller mais pas de chance.

21
Kishor Bikram Oli

J'ai fait une démonstration de base et reproduit ce problème. Il semble que le composant WinRT n'ait pas trouvé l'assembly correct de Newton.Json. Temporairement, la solution consiste à ajouter manuellement le fichier Newtonsoft.json.dll. Vous pouvez y parvenir en procédant comme suit:

  1. Cliquez avec le bouton droit de la souris sur Références-> Ajouter une référence-> Parcourir ...-> Rechercher C:\Utilisateurs\.nuget\packages\Newtonsoft.Json\9.0.1\lib\portable-net45 + wp80 + win8 + wpa81\Newtonsoft.json. dll-> Cliquez sur le bouton Ajouter.

  2. Reconstruisez votre projet de composant d'exécution et exécutez-le. Cette erreur devrait être partie.

23
Elvis Xia - MSFT

J'ai résolu ce problème en ajoutant Newtonsoft.Json au NuGet du projet de démarrage.

14
Jfly

J'ai eu le même problème aussi, pour résoudre ceci, vérifiez dans Références de votre projet si la version de Newtonsoft.Json a été mise à jour (probablement pas), puis supprimez-la et enregistrez dans votre/ Web.config ou App.config si l'élément dependAssembly a été mis à jour comme suit:

<dependentAssembly>
  <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
</dependentAssembly>

Après cela, reconstruisez à nouveau le projet (le dll sera remplacé par la version correcte)

13
Richard Lee

Il y a quelque temps, j'ai rencontré un problème similaire avec une nouvelle application ASP.NET Core. Une des bibliothèques référencées utilisait une version de Newtonsoft.Json inférieure à 9.0.0.0. J'ai donc mis à niveau la version de cette bibliothèque et le problème a été résolu. Vous ne savez pas si vous pourrez faire la même chose ici

6
hbulens

J'utilise Visual Studio 2013 Update 2. Dans mon cas, j’ai un projet Web, un projet Web Api et un projet de test unitaire ainsi que d’autres bibliothèques de classes dans une solution unique.

J'ai passé quelques jours à résoudre le problème. Vous trouverez ci-dessous la solution étape par étape que j'ai trouvée.

  1. Faites un clic droit sur le projet Web Api. Sélectionnez "Définir comme projet de démarrage".
  2. Faites un clic droit sur le projet Web Api. Accédez à Propriétés _ (Alt + Entrée).
  3. Dans l'onglet Application du menu de gauche, sélectionnez Application
  4. Trouver cadre cible. Changez-le en 4.5.1 et sauvegardez-le. Cependant, il affiche une erreur dans la fenêtre "Liste des erreurs". Après la reconstruction, il n'y a pas d'erreur.
  5. Supprimer tous les packs Newtonsoft.Json de la solution en utilisant la requête ci-dessous à partir de la console Package Manager (pour l'obtenir Affichage> Autre fenêtre> Console du gestionnaire de packages).

désinstaller-package newtonsoft.json -force

  1. RéinstallerNewtonsoft.Json à partir de Console du gestionnaire de packages

paquet d'installation newtonsoft.json

  1. Si vous disposez de la dernière mise à jour pour Visual Studio 2013, vous pouvez ne pas rencontrer ce problème. Comme j'utilise Update 2, en essayant d'installer Newtonsoft.Json, j'ai rencontré l'erreur suivante.

Le package 'Newtonsoft.Json 10.0.3' nécessite la version du client NuGet 2.12 ou plus, mais la version actuelle de NuGet est «2.8.50313.46»

  1. Pour résoudre ce problème, nous devons mettre à jour la console Package Manager. Aller à

Outils> Extensions et mises à jour ...> Dans le volet de gauche .. sélectionnez Mises à jour> Galerie Visual Studio.

  1. Mise à jour l'extension NuGet Package Manager. Suivez les étapes à venir.

  2. Visual Studio prendra un redémarrage après cela.

  3. _ {Exécuter l'étape 6} à nouveau.

Après l'installation, packages.config sera ajouté avec cette ligne ci-dessous

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

Après l'installation, web.config sera ajouté avec les lignes ci-dessous

<dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
</dependentAssembly>

Il s'exécutera avec succès s'il n'y a pas d'autre erreur.

5
Kuntal Ghosh

J'ai rencontré des problèmes similaires avec mes projets ASP.NET Core . Le fichier .config du dossier bin/debug-folder est généré avec ceci:

  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
    <bindingRedirect oldVersion="6.0.0.0" newVersion="9.0.0.0" />
    <bindingRedirect oldVersion="10.0.0.0" newVersion="9.0.0.0" />
  </dependentAssembly>

Si je change manuellement le second bindingRedirect en ceci, cela fonctionne:

<bindingRedirect oldVersion="9.0.0.0" newVersion="10.0.0.0" />

Je ne sais pas pourquoi cela se produit.

J'utilise Visual Studio 2015 avec .Net Core SDK 1.0.0-preview2-1-003177.

2
HGHansen

Il nous a fallu une journée pour résoudre ce problème. La solution consiste à forcer votre service Web à utiliser la version 11.0.0 dans votre 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-11.0.0.0" newVersion="11.0.0.0" />
  </dependentAssembly>
</assemblyBinding>

1
Sabri Meviş

Je pense qu'AutoCAD a détourné le mien. La solution qui a fonctionné pour moi était de le détourner. Je l'ai eu de https://forums.autodesk.com/t5/navisworks-api/could-not-load-file-or-Assembly-newtonsoft-json/td-p/7028055?profile.language=fr - Ouais, Internet fonctionne de manière mystérieuse.

// in your initilizer ...
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler);

.....

private Assembly MyResolveEventHandler(object sender, ResolveEventArgs args)
{
    if (args.Name.Contains("Newtonsoft.Json"))
    {
        string assemblyFileName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\Newtonsoft.Json.dll";
        return Assembly.LoadFrom(assemblyFileName);
    }
    else
        return null;
}
0
CAD bloke

Dans mon cas, le problème venait du fichier de configuration web.config Sur ma machine lorsque j'ai mis à jour la version de newton VS a automatiquement corrigé mon fichier web.config pour qu'il pointe vers la nouvelle version. Lorsque je l'ai chargé en production, le fichier Web.config existant pointait vers l'ancienne version. 

Une fois que j'ai mis à jour le fichier web.config, il a recommencé à fonctionner.

<assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0" />
  </dependentAssembly>
0
user1418586

A été capable de résoudre ce problème dans mon projet asp.net mvc en mettant à jour ma version de Newton.Json (ancienne version = 9.0.0.0 vers la nouvelle version 11.0.0.0) du gestionnaire de packages usign.

0
David Zagi