Le projet d’API Web Visual Studio 2012 ne s’exécutera pas – impossible de trouver Newtonsoft.Json

Après avoir exécuté une solution propre et reconstruit, mon projet MVC 4 Web API cesse de fonctionner. Il ne peut pas trouver Newtonsoft.Json.

Je sais que MS utilise ceci comme sérialiseur JSON par défaut maintenant – mais ce n’est pas dans la liste des références pour le projet, et je ne peux pas l’append à NuGet car il dit qu’il est déjà installé.

Est-ce que quelqu’un a une idée de ce qui pourrait mal tourner?

Trace de stack complète:

[FileNotFoundException: impossible de charger le fichier ou l’assembly ‘Newtonsoft.Json, Version = 4.5.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed’ ou l’une de ses dépendances. Le système ne peut pas trouver le fichier spécifié.]
MvcWebRole1.WebApiApplication.Application_Error () dans d: \ Data \ Projets contrôlés par la source \ georace \ georace \ Server \ GeoRaceServer \ MvcWebRole1 \ Global.asax.cs: 70

[HttpException (0x80004005): Impossible de charger le fichier ou l’assembly ‘Newtonsoft.Json, Version = 4.5.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed’ ou l’une de ses dépendances. Le système ne peut pas trouver le fichier spécifié.]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode (contexte HttpContext, application HttpApplication) +12838633
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS (gestionnaires IntPtr appContext, contexte HttpContext, MethodInfo [] +175
System.Web.HttpApplication.InitSpecial (état HttpApplicationState, gestionnaires MethodInfo [], IntPtr appContext, contexte HttpContext) +304
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance (contexte IntPtr appContext, HttpContext) +404
System.Web.Hosting.PipelineRuntime.InitializeApplication (IntPtr appContext) +475

[HttpException (0x80004005): Impossible de charger le fichier ou l’assembly ‘Newtonsoft.Json, Version = 4.5.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed’ ou l’une de ses dépendances. Le système ne peut pas trouver le fichier spécifié.]
System.Web.HttpRuntime.FirstRequestInit (contexte HttpContext) +12851296 System.Web.HttpRuntime.EnsureFirstRequestInit (contexte HttpContext) +159 System.Web.HttpRuntime.ProcessRequestNotificationPrivate (IIS7WorkerRequest wr, contexte HttpContext) +12679949

Ok – J’ai trouvé un travail autour de moi, en publiant au cas où quelqu’un d’autre serait attaqué par ce bogue MS. Le problème est que vous ne pouvez pas append une référence NuGet car elle est déjà incluse dans les packages par défaut. Alors…

  1. Ouvrez packages.config
  2. Supprimez l’entrée Newtonsoft.Json.
  3. Enregistrer et construire
  4. Re-append Newtonsoft.Json de NuGet.
  5. Construire et courir

Pour tout package déjà installé par NuGet que vous souhaitez réinstaller, tapez simplement la commande suivante dans Package Manager Console :

Mise à jour dans tout projet:

 Update-Package Newtonsoft.Json -Reinstall 

Mise à jour dans un projet spécifique

 Update-Package Newtonsoft.Json -Reinstall -Project My.App 

Pour moi, la seule chose qui a corrigé cette erreur a été d’append la section manquante à mon fichier web.config, que j’ai reçu de cette réponse ici: https://stackoverflow.com/a/20414714/940783

Voici ce que je devais append:

      

J’ai combiné quelques options indiquées par les autres consortingbuteurs SO, plus une nouvelle.

Tout d’abord, il s’avère que Nuget 2.1 a rencontré quelques problèmes, et que ce problème a été consigné dans un bogue et a été corrigé dans la version 2.2.2. Voir ici: https://nuget.codeplex.com/workitem/3050

Donc, j’ai fait les étapes suivantes:

  1. Mise à jour de la version Nuget vers la version 2.2.2 selon le lien
  2. Suppression de toutes les références à Json dans mon projet en désinstallant NUget (clic droit sur le projet et recherche du package et désinstallation (même si cela n’a pas été fait))
  3. Supprimé physiquement les fichiers de package de l’ordinateur. J’ai trouvé des fichiers de paquets ici: //projectdir/packages/Newtonsoft.JSON
  4. Suppression du fichier packages.config du répertoire physique (//projectname/packages.config)
  5. Une fois que tout était terminé, j’ai à nouveau ajouté Newtonsoft via Nuget, puis j’ai refait une nouvelle construction, et ça a fonctionné.

J’ai eu le même problème (dans VS2012). Aucune réponse ne m’a aidé. Finalement je l’ai résolu par ceci:

1) Allez à OUTILS -> EXTENSIONS ET MISES À JOUR ici mettre à jour (ou installer) “NuGet Package Manager” ensuite allez dans “En ligne” et installez “Ajout rapide de NuGet” et “Références de NuGet”

2) après insttal tout en 1) dans votre projet, faites un clic droit sur “Références” et choisissez “Gérer les paquets Nuget” dans “Paquets installés” pour trouver Json.NET. Cliquez sur Désinstaller – vous ne pouvez pas le faire maintenant, mais il vous montre ce que vous devez désinstaller en premier (certains clients ASP Web Api). Donc, désinstallez tout cela et essayez de désinstaller “Json.NET” à nouveau. Maintenant, allez dans “En ligne” et installez “Json.NET”, “Bibliothèques de clients API ASP.NET WEB” et “OData Client ASP.NET WEB API”.

3) dans Global.asax delete row “WebApiConfig.Register (GlobalConfiguration.Configuration);”

construire la solution et tout devrait bien se passer .. J’espère que cela peut aider quelqu’un 🙂 gl

Vérifiez si vous avez une référence «ancien style» (pré-nuget) à JSON.NET pointant vers une copie locale obsolète incorporée dans votre projet.

J’avais un ancien Reference\Lib\JSON.NET qui était dans mon chemin de référence et devenait prioritaire.

Vérifiez que la page de propriétés JSON.NET pointe vers la version du package Nuget attendue.

J’ai eu ce problème sur une version de Team Server déployée en direct. J’ai dû réparer ma solution d’origine et faire une nouvelle version pour m’assurer que l’ancienne DLL de Reference\Lib\ n’était pas prise en compte.

Dans mon cas, j’ai vérifié le projet d’un collègue qui avait en quelque sorte transformé ma référence Newtonsoft.Json en erreur – j’ai donc dû le supprimer. Cliquez avec le bouton droit sur le projet -> Gérer les packages NuGet. Sur le côté gauche, cliquez sur “Packages installés”, puis sélectionnez Json.NET et désinstallez-le. Dans mon cas, j’ai également dû désinstaller d’autres packages dépendants (API Web ASP.Net Microsoft et autres). Choisissez “En ligne” sur le côté gauche et recherchez Json.Net, réinstallez-le.

J’avais la même exception FileNotFoundException et il se trouve que j’ai déjà la référence à Newtonsoft.Json sur mon projet, MAIS la propriété “Copy Local” n’a pas été définie sur TRUE. Réglez-le simplement sur TRUE pour que le fichier dll soit copié dans le répertoire de sortie si cela est votre cas également.

J’ai testé tout ce qui a été dit ici et rien n’a fonctionné. Dans mon cas, j’avais un dossier comme celui-ci.

  • # Projets / Web / App / …

Le # la cause de mon problème. J’ai enlevé le # et j’ai bien travaillé.

Ce qui a causé mon problème avec Newtonsoft.json était légèrement différent. J’ai développé une application Windows construite contre .Net 4.5. J’ai découvert plus tard que l’environnement du client ne supportait que .Net 4.0. J’avais copié la solution dans une nouvelle zone afin de préserver le travail sur .Net 4.5 et de modifier les propriétés de la solution en Microsoft.Net 4.0. J’ai eu l’erreur que Newtonsoft.json était introuvable et que je manquais une référence.

J’ai suivi les procédures indiquées ci-dessus pour supprimer les packages.config; supprimer Newtonsoft.json; s’assurer que Newtonsoft.json a été supprimé du répertoire \ packages; puis réinstallez Newtonsoft.json depuis NuGet. J’ai pu comstackr et exécuter l’application avec .Net 4.0

Avant cela, le fichier packages.config montrait que la version de .Net ciblée par Newtonsoft.json était .Net 4.5. La suppression et l’ajout de Newtonsoft.json ont désormais pour cible .Net 4.0.

Je l’ai fait par erreur, et ça s’est bien passé.

Après avoir démarré un nouveau projet VS 2012, j’ai utilisé NuGet pour installer Newtonsoft.JSON, la version 4.5.6 mentionnée étant déjà installée, et j’ai été impressionné de voir que cette version était désinstallée et que la version 4.5.10 était installée.

Doux.

Vous pouvez essayer d’installer le package SocialAuth.Net avec l’indicateur ‑IgnoreDependencies, puis installer les dépendances manuellement et vous assurer que vous installez uniquement la dernière version de la bibliothèque Json.Net.

Ensuite, à l’exécution, le package SocialAuth.Net respecterait la redirection d’assembly et chargerait Json.Net (v4.5) au lieu de l’ancienne version.

J’ai eu le même problème avec VS2012 Express, et j’ai réussi à l’installer depuis

TOOLS -> NuGet Package Manager -> Gérer les packages NuGet pour la solution

Là j’ai trouvé et installé Newtonsoft Json. Il n’était pas installé dans aucun des projets de la solution à ce moment-là.