J'ai une petite application MVC que j'utilise pour des raisons pratiques, mais maintenant, je rencontre une erreur à chaque fois que j'essaie de déboguer:
Could not load file or Assembly 'System.Net.Http.Formatting' or one of its dependencies.
The system cannot find the path specified.
J'ai googlé mais je ne trouve pas de solution. J'utilise .NET 4.5.
Il ne peut pas s'agir du fichier DLL car j'utilise .Net 4.5.
Chaque fois que j'ai une erreur NuGet comme celle-ci, je prends généralement les mesures suivantes:
Toutes ces étapes restaurent presque toujours tous les paquets et les dll dont j'ai besoin pour mon programme MVC.
EDIT >>>
Pour Visual Studio 2013 et supérieur, l’étape 2) devrait se lire comme suit:
Supprimer toutes les références de code à System.Net.*
dans la fenêtre du paquet,
Install-Package Microsoft.AspNet.WebApi.Client
Nettoyez et reconstruisez votre projet
J'ai trouvé un extra
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.2.28.0" newVersion="2.2.28.0" />
</dependentAssembly>
dans mon web.config. enlevé que pour le faire fonctionner. un autre paquet que j'ai installé, puis supprimé a causé le problème.
user3919888 m'a orienté dans la bonne direction, mais je devais exécuter Update-Package -reinstall Microsoft.AspNet.WebApi.Client
dans la console Package-Manager. L'installation de base en elle-même ne reconnaît pas le problème, mais reconnaît que le package est déjà installé et ne l'écrase pas.
Je poste cette réponse parce que cela arrive si rarement que je finis par googler et atteindre cette page avant de me rappeler ce que j'avais fait la dernière fois.
Supprimer les lignes suivantes de web.config
a résolu mon problème. Notez que dans ce projet, je n'ai pas utilisé de composants WebApi. Donc, pour d'autres, cette solution peut ne pas fonctionner comme prévu.
<dependentAssembly>
<assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
</dependentAssembly>
Comme suggéré à l'origine dans un commentaire de GeoMac et documenté sur la documentation de NuGet , les éléments suivants ont fonctionné pour moi lorsqu'aucune des autres réponses ne fonctionnait
Outils/Gestionnaire de paquets NuGet/Console du gestionnaire de paquets
Update-Package -ProjectName MyProjectName -reinstall
Dans mon cas, aucune des solutions ci-dessus n'a fonctionné. J'ai résolu par un clic droit sur la référence
System.Net.Http.Formatting
à partir de Visual studio et en définissant la propriété Copier Local vers true .
J'espère que cela est utile en quelque sorte.
Ce qui a résolu cette erreur agaçante pour moi, c’est de fermer Visual Studio et de le rouvrir. Reconstruisez ensuite la solution et tout a fonctionné à nouveau. Désolé pour la merde réponse, mais je pense que ça vaut la peine de répondre parce que ça a résolu le problème pour moi.
Pour moi, c'était aussi simple que
Microsoft.AspNet.WebApi.Client
du dossier des packages dans l'Explorateur WindowsJe faisais face au même problème parce que
System.Net.Http.Formatting
la version écrite dans webconfig était 5.0.3 mais dans le dossier bin, la bibliothèque System.Net.Http.Formatting dll était 4.0.2
donc je viens de remplacer par la même donnée à l'intérieur bin
il suffit de faire ce projet propre et de construire
Pour moi, ajouter quelques lignes en-dessous de WebApi.config fonctionne comme après la mise à jour du nouveau paquet Nuget
var setting = config.Formatters.JsonFormatter.SerializerSettings;
setting.ContractResolver = new CamelCasePropertyNamesContractResolver();
setting.Formatting = Formatting.Indented;
N'oubliez pas d'ajouter un espace de noms:
using Newtonsoft.Json.Serialization;
using Newtonsoft.Json;
VS2019: Outils -> Gestionnaire de paquets Nuget -> Configuration du gestionnaire de paquets -> dans la section Restauration du paquet, cochez 2 options. Après cela, allez dans le dossier des packages de projets et supprimez tous les dossiers enfants à l'intérieur (pour ne plus avoir d'erreur), puis Reconstruisez la solution, Nuget retéléchargera de nouveau tous les packages et le projet devrait s'exécuter sans aucune référence.
Vous devez probablement définir la référence de la bibliothèque comme "Copier Local = True" dans la boîte de dialogue des propriétés. Sur Visual Studio, cliquez sur "Références", puis cliquez avec le bouton droit de la souris sur la référence manquante. Dans le menu contextuel, cliquez sur Propriétés, vous devriez voir copier les paramètres locaux.
Dans mon cas, cependant, rien de ce qui précède n'a fonctionné, mais le remplacement de 5.2.3.0 par 4.0.0.0 a résolu le problème.
Pour ceux qui utilisent .NET Standard project en combinaison avec .NET Framework projects:
De manière standard, les packages inclus dans un projet .NET Standard seront correctement utilisés dans d'autres projets .NET Core et .NET Standard.
Si vous faites référence à un projet .NET Standard à partir d’un projet .NET Framework (MVC), vous devez télécharger et installer manuellement les mêmes packages de nuget.
Donc, la réponse à ma question était que je devais télécharger et installer Microsoft.AspNet.WebApi.Client
dans le projet Web (.NET Framework) qui utilise un projet .NET Standard où Microsoft.AspNet.WebApi.Client
est requis. En fait, je l'avais déjà installé mais il y avait une différence de version.
J'ajoute simplement cette réponse aux autres: elle ne répond peut-être pas directement à la question de OP, mais elle m'a permis de gagner du temps en vérifiant d'abord cette option au lieu de répondre aux réponses les plus votées.
Ce que j'ai fait pour résoudre ce problème est
Allez au gestionnaire de paquets NuGet.
Sélectionnez Mises à jour (dans le panneau de gauche)
Mettre à jour les composants WebApi
Après cela, le projet a été exécuté sans erreur.