Datei oder Assembly 'System.Net.Http.Formatting' oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Das System kann den angegebenen Pfad nicht finden

158

Ich habe eine kleine MVC-App, die ich aus Übungsgründen verwende, aber jetzt tritt jedes Mal ein Fehler auf, wenn ich versuche, Fehler zu beheben:

Could not load file or assembly 'System.Net.Http.Formatting' or one of its dependencies. 
The system cannot find the path specified.

Ich habe gegoogelt, kann aber keine Lösung finden. Ich verwende .NET 4.5.

Es kann nicht die DLL-Datei sein, da ich .Net 4.5 verwende.

Norris
quelle
1
siehe Abhängigkeit hier .. nuget.org/packages/System.Net.Http.Formatting
Vishal Sharma
Ich habe das versucht und es hat nicht funktioniert ... Stattdessen erhalte ich eine Fehlermeldung im Paketmanager mit der Meldung "NuGetCmdletUnhandledException, NuGet.PowerShell.Commands.InstallPackageCommand"
Norris

Antworten:

185

Wenn ich einen solchen NuGet-Fehler habe, gehe ich normalerweise folgendermaßen vor:

  1. Wechseln Sie im Windows Explorer zum Paketordner und löschen Sie ihn.
  2. Öffnen Sie Visual Studio und gehen Sie zu Extras > Bibliothekspaket-Manager > Paket-Manager-Einstellungen. Unter dem Element Paket-Manager auf der linken Seite befindet sich die Schaltfläche "Paket-Cache löschen". Klicken Sie auf diese Schaltfläche und stellen Sie sicher, dass das Kontrollkästchen "NuGet darf fehlende Pakete während der Erstellung herunterladen" aktiviert ist.
  3. Reinigen Sie die Lösung
  4. Klicken Sie dann im Projektmappen-Explorer mit der rechten Maustaste auf die Lösung und aktivieren Sie die NuGet-Paketwiederherstellung
  5. Erstellen Sie die Lösung
  6. Starten Sie Visual Studio neu

Wenn Sie alle diese Schritte ausführen, werden fast immer alle Pakete und DLLs wiederhergestellt, die ich für mein MVC-Programm benötige.


BEARBEITEN >>>

Für Visual Studio 2013 und höher sollte Schritt 2) lauten:

  1. Öffnen Sie Visual Studio und gehen Sie zu Extras > Optionen > NuGet Package Manager. Auf der rechten Seite befindet sich die Schaltfläche "Paket-Cache löschen". Klicken Sie auf diese Schaltfläche und stellen Sie sicher, dass die Kontrollkästchen "NuGet darf fehlende Pakete herunterladen" und "Beim Erstellen in Visual Studio automatisch nach fehlenden Paketen suchen" aktiviert sind.
Jordan_Walters
quelle
7
Dies hat funktioniert ... Das Problem wurde gelöst ... Danke Jordan_Walters ... Ich habe nicht genug Repräsentanten, um abzustimmen ... ansonsten wurde Ihre Hilfe sehr geschätzt
Norris
10
Guter Rat, aber mein Problem mit "Datei oder Assembly 'System.Net.Http.Formatting' oder einer ihrer Abhängigkeiten konnte nicht geladen werden. Das System kann den angegebenen Pfad nicht finden" konnte nicht behoben werden. Für mich musste ich zu Tools / NuGet Package Manager / Package Manager Console gehen und dann "Update-Package -ProjectName MyProject -reinstall". Alles repariert!
GeoMac
3
@YuraZaletskyy Ich denke, es ist in $ {SolutionDir} / packages /. Dh der Stammlösungsordner.
Jakejgordon
1
Tolle Tipps, danke, sie haben mir wirklich geholfen. Ich hoffe, es macht Ihnen nichts aus, dass ich einige weitere Informationen hinzugefügt habe, um spätere Versionen von Visual Studio widerzuspiegeln.
Sheridan
1
Ich habe das oben Gesagte befolgt und dennoch blieb der Fehler bestehen - ich habe mir die DLL-Version manuell angesehen und als ich meine web.config-Datei überprüft habe, gab es doppelte Einträge. Lassen Sie einfach einen einzelnen Eintrag, der Ihrer DLL-Version entspricht, und alles sollte funktionieren - das hat bei mir funktioniert
JazziJeff
168
  • Entfernen Sie alle Code-Verweise auf System.Net.*

  • im Paketfenster

    Install-Package Microsoft.AspNet.WebApi.Client

  • Bereinigen und erstellen Sie Ihr Projekt neu

user3919888
quelle
2
Ich bin gerade auf dieses Problem gestoßen und habe die neueste NuGet-Paketversion von Microsoft.AspNet.WebApi.Client installiert. Dann habe ich System.Net.Http.Formatting in meiner Referenzliste gesehen.
Ewomack
Ich habe alles andere versucht. Dies ist der einzige, der für mich gearbeitet hat.
Timothy Kanski
Hat für mich gearbeitet. Stellen Sie sicher, dass Sie die richtige Version installieren.
CrusherJoe
1
Diese Lösung funktionierte, nachdem ich meine Web.Config bindingRedirectfür System.Net.Http.Formattingund System.Web.Httpauf die neue aktualisiert hatte , die mit dem obigen Befehl installiert wurde ... dh sie ging von <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>zu<bindingRedirect oldVersion="0.0.0.0-4.0.30319" newVersion="4.0.30319"/>
Serj Sagan
Ist es dann so, dass vielen von uns einfach das Microsoft.AspNet.WebApi.Client NuGet-Paket fehlte?
carlin.scott
27

Ich habe ein Extra gefunden

  <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>

in meiner web.config. entfernte das, um es zum Laufen zu bringen. Ein anderes Paket, das ich installiert und dann entfernt habe, hat das Problem verursacht.

realPT
quelle
Woher wissen Sie, was das öffentliche Token der Version ist? b03f5f7f11d50a3a
eran otzap
Es wird automatisch vom Paketmanager-Konsolenbefehl hinzugefügt: Add-BindingRedirect *
Simon Hughes
18

user3919888 zeigte mir die richtige Richtung, aber ich musste Update-Package -reinstall Microsoft.AspNet.WebApi.Clientin der Package-Manager-Konsole ausgeführt werden. Die Basisinstallation selbst erkennt das Problem nicht, erkennt jedoch, dass das Paket bereits installiert ist, und überschreibt es nicht.

Ich poste diese Antwort, weil dies so selten vorkommt, dass ich am Ende google und diese Seite erreiche, bevor ich mich daran erinnere, was ich das letzte Mal getan habe.

längster Weg
quelle
16

Das Entfernen der folgenden Zeilen aus web.configlöste mein Problem. Beachten Sie, dass ich in diesem Projekt keine WebApi-Komponenten verwendet habe. Für andere funktioniert diese Lösung möglicherweise nicht wie erwartet.

  <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>
Mahmoud Moravej
quelle
Woher wissen Sie, was das öffentliche Token der Version ist?
eran otzap
Wie ich weiß, ist es ein öffentliches Token aller Microsoft-DLLs, unabhängig von ihrer Version.
Mahmoud Moravej
Um lustig zu sein, habe ich diese Zeilen hinzugefügt und es hat geholfen.
Krzysztof Madej
Das hat das Problem auch für mich behoben.
Vishal
Dies löste auch mein Problem. Ich hatte ein altes Website-Projekt in eine Webanwendung konvertiert. Die Datei Web.config verwies auf Version 5.2.7, während das installierte NuGet-Paket 5.2.3 war. Durch Löschen aus der Web.config wurde der Fehler behoben.
Cesar Daniel
9

Für diejenigen, die .NET Standard- Projekte in Kombination mit .NET Framework- Projekten verwenden:

Auf die .NET Standard-Weise werden Pakete, die in einem .NET Standard-Projekt enthalten sind, korrekt in anderen .NET Core- und .NET Standard-Projekten verwendet.

Wenn Sie auf die .NET Framework-Methode verweisen und auf ein .NET Standard-Projekt aus einem .NET Framework (MVC) -Projekt verweisen, müssen Sie dieselben Nuget-Pakete manuell herunterladen und installieren.

Die Antwort auf meine Frage war also, dass ich Microsoft.AspNet.WebApi.Clientdas Webprojekt (.NET Framework) herunterladen und installieren musste, das bei Microsoft.AspNet.WebApi.ClientBedarf ein .NET Standard-Projekt verwendet . Tatsächlich hatte ich dies bereits installiert, aber es gab einen Versionsunterschied.

Ich füge diese Antwort nur hinzu, damit andere sie sehen können. Sie beantwortet möglicherweise nicht direkt die Frage von OP, aber es hat mir Zeit gespart, indem ich dies zuerst überprüft habe, anstatt die Antworten mit den höchsten Stimmen zu geben.

CularBytes
quelle
1
Ich verwende .NET Core und habe auf gingter.org/2018/07/26/… eine Anleitung gefunden, um den HttpClient zu verspotten . Das Befolgen dieser Anleitung gab mir das in der Frage von OP beschriebene Problem. Und
Ihre
Das hat bei mir funktioniert. Versuchte den empfohlenen Ansatz, alle Pakete zu entfernen und wiederherzustellen, aber am Ende musste ich Nuget verwenden, um Microsoft.AspNet.WebApi.Client zu installieren, um sicherzustellen, dass es die Version ist, die ich brauchte, und danach war alles in Ordnung.
TH Todorov
Tolle Antwort - Ich begann zu denken, ich müsste alles wieder in das Framework verschieben!
d219
6
  1. Entfernen Sie alle Code-Verweise auf System.Net.*
  2. Deinstallieren: Paket Microsoft.AspNet.WebApiund seine Abhängigkeiten.
  3. Installieren Sie alle neu: Paket Microsoft.AspNet.WebApiund seine Abhängigkeiten.
  4. Bereinigen und erstellen Sie Ihr Projekt neu
Sandeep
quelle
Danke dir! Du hast mich nach 2 Tagen verzweifelter Versuche gerettet. Es hat mich fast verrückt gemacht.
Marek Dorda
5

Wie ursprünglich in einem Kommentar von vorgeschlagen GEOMAC und dokumentierte auf NuGet der docs folgende für mich gearbeitet , wenn keine der anderen Antworten gearbeitet:

Tools / NuGet Package Manager / Package Manager-Konsole

Update-Package -ProjectName MyProjectName -reinstall
bbodenmiller
quelle
Ich habe Visual Studio 2015. Dies ist, was ich tun musste, sofort behoben.
Damian C
3

In meinem Fall hat keine der oben genannten Lösungen funktioniert. Ich löste durch Klicken mit der rechten Maustaste auf die Referenz

System.Net.Http.Formatting

aus Visual Studio und Setzen der Eigenschaft Copy Local auf true .

Ich hoffe das ist irgendwie nützlich.

Hugo Nava Kopp
quelle
2
Ich habe das getan und es passiert immer noch
eran otzap
2

Was diesen nervigen Fehler für mich gelöst hat, war, Visual Studio zu schließen und es wieder zu öffnen. Erstellen Sie dann die Lösung neu, und alles hat wieder funktioniert. Entschuldigung für die beschissene Antwort, aber ich denke, es ist eine Antwort wert, weil sie es für mich gelöst hat.

andreasnico
quelle
1
Das war alles, was ich brauchte
Steve Vermeulen
1

Für mich war es so einfach wie

  1. Löschen Sie Microsoft.AspNet.WebApi.Clientaus dem Paketordner im Windows Explorer
  2. Öffnen Sie Tools> NuGet Package Manager> Package Manager Console
  3. Klicken Sie auf die Schaltfläche "Wiederherstellen"
adam0101
quelle
1

In meinem Fall hat keines der oben genannten Verfahren funktioniert. Das Ersetzen von 5.2.3.0 durch 4.0.0.0 hat das Problem jedoch gelöst.

Sebastián Vansteenkiste
quelle
1

Ich hatte das gleiche Problem, weil

System.Net.Http.Formatting

Die in webconfig geschriebene Version war 5.0.3, aber im bin-Ordner war die DLL-Version der Bibliothek System.Net.Http.Formatting 4.0.2

Also habe ich es einfach durch das gleiche ersetzt

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Mach einfach dieses saubere Projekt und baue

TAHA SULTAN TEMURI
quelle
0

Wahrscheinlich müssen Sie die Bibliotheksreferenz im Eigenschaftendialog als "Lokal kopieren = Wahr" festlegen. Klicken Sie in Visual Studio auf "Referenzen" und dann mit der rechten Maustaste auf die fehlende Referenz. Klicken Sie im Kontextmenü auf Eigenschaften, um die lokale Einstellung zu kopieren.

mähen
quelle
0

Für mich funktioniert das Hinzufügen einiger weniger Zeilen in WebApi.config so, wie es nach dem Aktualisieren des neuen Nuget-Pakets nicht funktioniert hat

var setting = config.Formatters.JsonFormatter.SerializerSettings;
setting.ContractResolver = new CamelCasePropertyNamesContractResolver();
setting.Formatting = Formatting.Indented;

Vergessen Sie nicht, einen Namespace hinzuzufügen:

using Newtonsoft.Json.Serialization; 
using Newtonsoft.Json;
aschige Vicky
quelle
Bitte stellen Sie sicher, dass Sie die Projektabhängigkeit überprüfen, indem Sie mit der rechten Maustaste auf die Lösungsdatei klicken und dann unter Allgemeine Eigenschaften-> Projektabhängigkeiten das Projekt überprüfen, bei dem der Fehler ausgelöst wird, oder den Projektnamen überprüfen, von dem die Lösung abhängig ist
aschfahl Vicky
0

Was ich getan habe, um dieses Problem zu lösen, ist

  1. Gehen Sie zum NuGet-Paketmanager.

  2. Wählen Sie Updates (im linken Bereich).

  3. Aktualisieren Sie die WebApi-Komponenten

  4. Danach lief das Projekt fehlerfrei.

Raj
quelle
0

VS2019: Tools -> Nuget Package Manager -> Package Manager-Einstellungen -> Aktivieren Sie im Abschnitt Paketwiederherstellung zwei Optionen. Gehen Sie danach zum Ordner "Projektpakete" und löschen Sie alle darin enthaltenen untergeordneten Ordner (für keinen Fehler mehr). Anschließend wird die Lösung neu erstellt. Nuget lädt alle Pakete erneut herunter, und das Projekt sollte ohne Referenz ausgeführt werden.

großartig
quelle
0

Ich hatte das Problem mit einem ASP.NET-Projekt in VS 2019.

Ein weiteres Symptom war, dass einige Referenzen (System.Web.Http) in der Projektreferenzliste (Projektmappen-Explorer) als fehlerhaft markiert wurden.

Meine Lösung:

  1. Löschen Sie die fehlerhaften Referenzen unter Projekt -> Referenzen (Rechtsklick, ...)
  2. Bauen
  3. Navigieren Sie zu den Erstellungsfehlern "Der Typ- oder Namespace-Name [...] wurde nicht gefunden" oder ähnlichem
  4. Verwenden Sie "Paket mit möglichen Korrekturen" -> Paket installieren

Die Ursache:

Wenn ich mir den Unterschied in der csproj-Datei anschaue, kann ich den Grund für das Problem erkennen . Jemand hat es geschafft, auf eine DLL im Windows-Programmdateiordner zu verweisen!

<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>
Daniel Hillebrand
quelle