Impossible de charger le fichier ou l'assembly 'System.Net.Http.Formatting' ou l'une de ses dépendances. Le système ne peut pas trouver le chemin spécifié


158

J'ai une petite application MVC que j'utilise pour des raisons de pratique, 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 cherché sur Google mais je ne trouve pas de solution. J'utilise .NET 4.5.

Ce ne peut pas être le fichier DLL car j'utilise .Net 4.5.



J'ai essayé cela et cela n'a pas fonctionné ... Au lieu de cela, j'obtiens une erreur sur le gestionnaire de package disant `` NuGetCmdletUnhandledException, NuGet.PowerShell.Commands.InstallPackageCommand ''
Norris

Réponses:


185

Chaque fois que j'ai une erreur NuGet comme celle-ci, je prends généralement ces étapes:

  1. Accédez au dossier packages de l'explorateur Windows et supprimez-le.
  2. Ouvrez Visual Studio et accédez à Outils > Gestionnaire de package de bibliothèque > Paramètres du gestionnaire de package et sous l'élément Gestionnaire de package sur le côté gauche, il y a un bouton «Effacer le cache de package». Cliquez sur ce bouton et assurez-vous que la case à cocher «Autoriser NuGet à télécharger les packages manquants pendant la génération» est cochée.
  3. Nettoyez la solution
  4. Ensuite, cliquez avec le bouton droit sur la solution dans l'Explorateur de solutions et activez la restauration de package NuGet
  5. Construisez la solution
  6. Redémarrez Visual Studio

Prendre toutes ces étapes restaure presque toujours tous les packages et dll dont j'ai besoin pour mon programme MVC.


MODIFIER >>>

Pour Visual Studio 2013 et au-dessus, l'étape 2) doit se lire:

  1. Ouvrez Visual Studio et allez dans Outils > Options > Gestionnaire de package NuGet et sur le côté droit, il y a un "bouton Effacer le cache de package". Cliquez sur ce bouton et assurez-vous que les cases à cocher «Autoriser NuGet à télécharger les packages manquants» et «Rechercher automatiquement les packages manquants lors de la génération dans Visual Studio» sont cochées.

7
Cela a fonctionné ... Résolu le problème ... Merci Jordan_Walters ... Je n'ai pas assez de représentants pour voter ... sinon votre aide a été très appréciée
Norris

10
Bon conseil mais il n'a pas résolu mon problème avec "Impossible de charger le fichier ou l'assembly 'System.Net.Http.Formatting' ou l'une de ses dépendances. Le système ne trouve pas le chemin spécifié". Pour moi, je devais aller dans Tools / NuGet Package Manager / Package Manager Console puis "Update-Package -ProjectName MyProject -reinstall". Tout est réparé!
GeoMac

3
@YuraZaletskyy Je pense que c'est dans $ {SolutionDir} / packages /. Ie le dossier de la solution racine.
jakejgordon

1
De bons conseils, merci, ils m'ont vraiment aidé. J'espère que cela ne vous dérange pas d'avoir ajouté des informations supplémentaires pour refléter les versions ultérieures de Visual Studio.
Sheridan

1
J'ai suivi ce qui précède et pourtant l'erreur est restée - j'ai regardé manuellement la version dll et quand j'ai vérifié mon fichier web.config, il y avait des entrées en double, laissez simplement une seule entrée pour correspondre à votre version dll et tout devrait fonctionner - cela a fonctionné pour moi
JazziJeff

168
  • Supprimer toutes les références de code à System.Net.*

  • dans la fenêtre du package,

    Install-Package Microsoft.AspNet.WebApi.Client

  • Nettoyez et reconstruisez votre projet


2
Je viens de rencontrer ce problème et j'ai installé la dernière version du package NuGet de Microsoft.AspNet.WebApi.Client, puis j'ai vu System.Net.Http.Formatting dans ma liste de références.
ewomack

J'ai tout essayé. C'est le seul qui a fonctionné pour moi.
Timothy Kanski

A travaillé pour moi. Assurez-vous d'installer la bonne version.
CrusherJoe

1
Cette solution a fonctionné après avoir mis à jour mon Web.Config bindingRedirectfor System.Net.Http.Formattinget System.Web.Httpvers le nouveau installé par la commande ci-dessus ... c'est-à-dire qu'il est passé de <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>à<bindingRedirect oldVersion="0.0.0.0-4.0.30319" newVersion="4.0.30319"/>
Serj Sagan

Est-ce le cas alors que beaucoup d'entre nous manquaient simplement le package NuGet Microsoft.AspNet.WebApi.Client?
carlin.scott

27

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. supprimé cela pour le faire fonctionner. un autre package que j'ai installé, puis supprimé a causé le problème.


comment savez-vous quel est le jeton public de la version? b03f5f7f11d50a3a
eran otzap

Il est ajouté automatiquement par la commande de la console du gestionnaire de paquets: Add-BindingRedirect *
Simon Hughes

18

user3919888 m'a orienté dans la bonne direction, mais j'avais besoin de courir Update-Package -reinstall Microsoft.AspNet.WebApi.Clientdans 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 se produit si rarement que je finis par rechercher sur Google et atteindre cette page avant de me souvenir de ce que j'ai fait la dernière fois.


16

La suppression des lignes suivantes de web.configré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>

comment savez-vous quel est le jeton public de la version?
eran otzap

Comme je le sais, il s'agit d'un jeton public de toutes les DLL Microsoft, quelle que soit leur version.
Mahmoud Moravej

Pour être drôle, j'ai ajouté ces lignes et cela a aidé.
Krzysztof Madej

Cela a réglé le problème pour moi aussi.
Vishal

Cela a également résolu mon problème. J'avais converti un ancien projet de site Web en une application Web. Le fichier Web.config faisait référence à la version 5.2.7, tandis que le package NuGet installé était 5.2.3. La suppression de cela de Web.config a corrigé l'erreur.
Cesar Daniel

9

Pour ceux qui utilisent le projet .NET Standard en combinaison avec les projets .NET Framework :

De la manière .NET Standard, les packages inclus dans un projet .NET Standard seront correctement utilisés dans d'autres projets .NET Core et .NET Standard.

Im la manière .NET Framework, 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 nuget.

Donc, la réponse à ma question était que je devais télécharger et installer Microsoft.AspNet.WebApi.Clientdans le projet Web (.NET Framework) qui utilise un projet .NET Standard là où Microsoft.AspNet.WebApi.Clientc'est nécessaire. En fait, je l'avais déjà installé mais il y avait une différence de version.

J'ajoute simplement cette réponse pour que les autres la voient, cela ne répond peut-être pas directement à la question d'OP, mais cela m'a fait gagner du temps en vérifiant d'abord cela au lieu de faire les réponses les mieux votées.


1
J'utilise .NET Core et j'ai trouvé un guide pour se moquer du HttpClient sur gingter.org/2018/07/26/… . Suivre ce guide m'a donné le problème décrit dans la question d'OP. Et votre solution a résolu le problème :)
Thorkil Værge

C'est ce qui a fonctionné pour moi. J'ai essayé l'approche recommandée, en supprimant et en restaurant tous les packages, mais à la fin, j'ai dû utiliser Nuget pour installer Microsoft.AspNet.WebApi.Client en m'assurant que c'était la version dont j'avais besoin et que tout allait bien après cela,
TH Todorov

Excellente réponse - je commençais à penser que je devais tout replacer dans le Framework!
d219 le

6
  1. Supprimer toutes les références de code à System.Net.*
  2. Désinstaller: package Microsoft.AspNet.WebApiet ses dépendances.
  3. Réinstaller tout: Package Microsoft.AspNet.WebApiet ses dépendances.
  4. Nettoyez et reconstruisez votre projet

Je vous remercie! Vous m'avez sauvé après 2 jours d'essais désespérés. Cela m'a presque rendu fou.
Marek Dorda

5

Comme suggéré à l'origine dans un commentaire de GeoMac et documenté sur la documentation de NuGet, ce qui suit a fonctionné pour moi lorsqu'aucune des autres réponses n'a fonctionné:

Outils / Gestionnaire de packages NuGet / Console du gestionnaire de packages

Update-Package -ProjectName MyProjectName -reinstall

J'ai Visual Studio 2015. C'est ce que j'avais à faire, je l'ai corrigé instantanément.
Damian C

3

Dans mon cas, aucune des solutions ci-dessus n'a fonctionné. J'ai résolu en faisant un clic droit sur la référence

System.Net.Http.Formatting

à partir de Visual studio et en définissant la propriété Copy Local sur true .

J'espère que cela est utile d'une manière ou d'une autre.


2
je l'ai fait et ça arrive toujours
eran otzap

2

Ce qui a résolu cette erreur ennuyeuse pour moi était simplement de fermer Visual Studio et de l'ouvrir à nouveau. Ensuite, reconstruisez la solution et tout a fonctionné à nouveau. Désolé pour la réponse de merde, mais je pense que cela vaut la peine d'avoir une réponse car cela l'a résolu pour moi.


1
C'était tout ce qu'il fallait pour moi aussi
Steve Vermeulen

1

Pour moi, c'était aussi simple que

  1. Supprimer Microsoft.AspNet.WebApi.Clientdu dossier packages dans l'Explorateur Windows
  2. Ouvrez Outils> Gestionnaire de package NuGet> Console du gestionnaire de package
  3. Cliquez sur le bouton "Restaurer"

1

Dans mon cas, rien de ce qui précède n'a fonctionné, cependant, le remplacement de 5.2.3.0 par 4.0.0.0 a résolu le problème.


1

J'étais confronté 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 version de la bibliothèque System.Net.Http.Formatting dll était 4.0.2

donc je viens de remplacer par le même bac à l'intérieur

entrez la description de l'image ici

entrez la description de l'image ici

faites simplement ce projet propre et construisez


0

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 faites un clic droit sur la référence manquante, dans le menu contextuel cliquez sur Propriétés, vous devriez voir copier le paramètre local.


0

Pour moi, l'ajout de quelques lignes ci-dessous dans WebApi.config fonctionne comme après la mise à jour du nouveau package nuget ne fonctionne pas

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;

assurez-vous de vérifier la dépendance du projet en cliquant avec le bouton droit sur le fichier de la solution, puis sous Propriétés communes-> dépendances du projet, vérifiez le projet où l'erreur est générée ou vérifiez le nom du projet dont dépend la solution
ashish Vicky

0

Ce que j'ai fait pour résoudre ce problème est

  1. Accédez au gestionnaire de packages NuGet.

  2. Sélectionnez Mises à jour (dans le panneau de gauche)

  3. Mettre à jour les composants WebApi

  4. Après cela, le projet s'est exécuté sans erreur.


0

VS2019: Outils -> Nuget Package Manager -> Package Manager Setting -> dans la section Package Restore, cochez 2 options. Après cela, allez dans le dossier des packages de projet et supprimez tous les dossiers enfants à l'intérieur (pour plus aucune erreur). Puis Rebuild solution, Nuget retéléchargera tous les packages et le projet devrait s'exécuter sans aucune référence.


0

J'ai eu le problème avec un projet ASP.NET dans VS 2019.

Un autre symptôme était que certaines références (System.Web.Http) étaient marquées comme défectueuses dans la liste des références de projet (Explorateur de solutions)

Ma solution:

  1. Supprimez les références défectueuses dans Projet -> Références (clic droit, ...)
  2. Construire
  3. Accédez aux erreurs de construction "Le type ou le nom de l'espace de noms [...] est introuvable" ou similaire
  4. Utilisez le "Afficher les correctifs potentiels" -> Installer le package

La cause:

En regardant la différence dans le fichier csproj, je pouvais voir la raison du problème. Quelqu'un a réussi à référencer une DLL dans le dossier de fichiers du programme Windows!

<Reference Include="System.Web.Http">
  <HintPath>..\..\..\..\..\..\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Packages\Microsoft.AspNet.WebApi.Core.4.0.30506.0\lib\net40\System.Web.Http.dll</HintPath>
</Reference>
<Reference Include="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\..\..\..\..\..\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Packages\Microsoft.AspNet.Mvc.4.0.30506.0\lib\net40\System.Web.Mvc.dll</HintPath>
</Reference>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.