Après avoir exécuté une solution propre et reconstruit, mon projet d'API Web MVC 4 cesse de fonctionner. Il ne peut pas trouver Newtonsoft.Json.
Je sais que MS utilise cela en tant que sérialiseur JSON par défaut, mais il ne figure pas dans la liste de références du projet et je ne peux pas l'ajouter à partir de NuGet car il est déjà installé.
Quelqu'un at-il une idée ici de ce qui pourrait aller de travers?
Trace complète de la pile:
[FileNotFoundException: impossible de charger le fichier ou l'assembly 'Newtonsoft.Json, version = 4.5.0.0, Culture = neutre, 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\Source Projets contrôlés\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 = neutre, 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 (IntPtr appContext, Contexte HttpContext, Gestionnaires MethodInfo []) +175
System.Web.HttpApplication.InitSpecial (état HttpApplicationState, gestionnaires MethodInfo [], IntPtr appContext, contexte HttpContext) +304
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance (IntPtr appContext, Contexte 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 = neutre, PublicKeyToken = 30ad4fe6b2a6aeed' ou l'une de ses dépendances. Le système ne peut pas trouver le fichier spécifié.]
Ok - j'ai trouvé un travail autour de moi, poster au cas où quelqu'un d'autre se laisserait berner par ce bogue MS. Le problème est que vous ne pouvez pas ajouter de référence NuGet car elle est déjà incluse dans les packages par défaut. Alors...
Pour tout paquet déjà installé que vous souhaitez réinstaller par NuGet, tapez simplement la commande suivante dans Console du gestionnaire de package:
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'ajouter la section manquante à mon fichier web.config, que j'ai obtenue de cette réponse ici: https://stackoverflow.com/a/20414714/94078
Voici ce que je devais ajouter:
<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>
J'ai combiné quelques-unes des options indiquées par les autres SO contributeurs, plus une nouvelle.
Premièrement, il s'avère que Nuget 2.1 avait quelques problèmes, et ce problème a été enregistré dans un bogue et a été corrigé dans la version 2.2.2. Voir ici: https://nuget.codeplex.com/workitem/305
Alors, j'ai fait les étapes suivantes:
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 mettez à jour (ou installez) "Gestionnaire de paquets NuGet" puis allez à "En ligne" et installez "Ajout rapide NuGet" et "Références NuGet"
2) après avoir tout installé 1) dans votre projet, cliquez avec le bouton droit de la souris sur "Références" et choisissez "Gérer les paquets Nuget" dans "Paquets installés", recherchez Json.NET. Cliquez sur Désinstaller - vous ne pouvez pas faire cela maintenant, mais cela vous indique ce que vous devez d'abord désinstaller (certains ASP Web Api)). Désinstallez-les tous et essayez à nouveau de désinstaller "Json.NET". Maintenant, allez dans "En ligne" et installez "Json.NET", "Bibliothèques clientes ASP.NET WEB API" et "OData client ASP.NET WEB API".
3) dans Global.asax, supprimez la ligne "WebApiConfig.Register (GlobalConfiguration.Configuration);"
construire la solution et tout devrait être ok .. J'espère que cela peut aider quelqu'un :) gl
Vérifiez si vous aviez une référence "ancien style" (pré-nuget) à JSON.NET pointant vers une copie locale obsolète intégrée dans votre projet.
J'ai eu un vieux Reference\Lib\JSON.NET
qui était dans mon chemin de référence et qui a la priorité.
Vérifiez que la page de propriétés JSON.NET pointe vers la version de package Nuget attendue.
J'ai eu ce problème sur une version de Team Server déployée en direct. Je devais réparer ma solution d'origine et faire un build propre pour m'assurer que l'ancien Reference\Lib\
DLL n’a pas été récupéré.
J'avais le même FileNotFoundException et il s'avère que j'ai déjà la référence à Newtonsoft.Json sur mon projet, MAIS la propriété "Copier local" n'a pas été définie sur VRAI. Il suffit de le définir sur TRUE pour que la dll soit copiée dans le répertoire de sortie si c'est également votre cas.
La cause de mon problème avec Newtonsoft.json était légèrement différente. J'avais développé une application Windows construite contre .Net 4.5. J'ai découvert par la suite que l'environnement du client ne supportait que .Net 4.0. J'avais copié la solution dans une nouvelle zone pour préserver le travail .Net 4.5 et changé les propriétés de la solution en Microsoft.Net 4.0. J'ai eu l'erreur que Newtonsoft.json était introuvable et qu'il me manquait une référence.
J'ai suivi les procédures indiquées ci-dessus pour supprimer le package.config; supprimer Newtonsoft.json; s'assurer que Newtonsoft.json a été supprimé du répertoire\packages; puis réinstallez Newtonsoft.json à partir de NuGet. J'ai pu compiler 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. Supprimer et ajouter le fichier Newtonsoft.json a maintenant la cible sous la forme .Net 4.0.
J'ai testé tout ce qui a été dit ici et rien n'a fonctionné. Dans mon cas, j'avais un dossier de chemin comme celui-ci.
Le # la cause de mon problème. J'ai enlevé le # et a bien fonctionné.
Dans mon cas, j'ai vérifié le projet d'un collègue qui a en quelque sorte altéré ma référence Newtonsoft.Json - j'ai donc dû l'enlever. Faites un clic droit sur le projet -> Gérer les paquets NuGet. Sur le côté gauche, cliquez sur "Packages installés", puis sélectionnez Json.NET et désinstallez-le. Dans mon cas, je devais également désinstaller d'autres packages dépendants (API Web Microsoft ASP.Net et autres). Choisissez "En ligne" sur le côté gauche et recherchez Json.Net, réinstallez-le.
J'ai fait cela par erreur, et tout s'est bien réglé.
Ayant démarré un nouveau projet VS 2012, j'ai utilisé NuGet pour installer Newtonsoft.JSON, la version 4.5.6 étant déjà installée, et j'ai été impressionné de constater que celui-ci avait été désinstallé et installé 4.5.10.
Doux.
Vous pouvez essayer d'installer le package SocialAuth.Net avec l'indicateur –IgnoreDependencies, puis d'installer les dépendances manuellement et en vous assurant que vous n'installez que la dernière version de la bibliothèque Json.Net.
Ensuite, au moment de l'exécution, le package SocialAuth.Net respecterait la redirection d'assemblage et chargerait Json.Net (v4.5) à la place de l'ancienne version.
J'ai eu le même problème dans VS2012 Express et j'ai réussi à l'installer de
OUTILS -> Gestionnaire de paquets NuGet -> Gérer les paquets NuGet pour la solution
Là j'ai trouvé et installé Newtonsoft Json. Il n'a été installé dans aucun des projets de solution à ce moment-là.