Ich habe eine kleine MVC-App, die ich aus Übungsgründen benutze, aber jetzt stoße ich jedes Mal auf einen Fehler, wenn ich versuche zu debuggen:
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.
Wenn ich einen NuGet-Fehler wie diese habe, mache ich normalerweise folgende Schritte:
Bei all diesen Schritten 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:
Entfernen Sie alle Codereferenzen auf System.Net.*
.
im Paketfenster,
Install-Package Microsoft.AspNet.WebApi.Client
Reinigen Sie Ihr Projekt und bauen Sie es neu auf
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, damit es funktioniert. Einige andere Pakete, die ich installiert und dann entfernt habe, haben das Problem verursacht.
user3919888 wies mich in die richtige Richtung, aber ich musste Update-Package -reinstall Microsoft.AspNet.WebApi.Client
in der Package-Manager-Konsole ausführen. Die Basisinstallation erkennt das Problem nicht, erkennt jedoch, dass das Paket bereits installiert ist und es nicht überschreibt.
Ich poste diese Antwort, weil dies so selten geschieht, dass ich am Ende google und diese Seite erreiche, bevor ich mich daran erinnere, was ich das letzte Mal getan habe.
Das Entfernen der folgenden Zeilen aus web.config
hat mein Problem behoben. Beachten Sie, dass ich in diesem Projekt keine WebApi-Komponenten verwendet habe. Für andere kann diese Lösung nicht wie erwartet funktionieren.
<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>
Wie ursprünglich in einem Kommentar von GeoMac vorgeschlagen und auf der Dokumentation von NuGet dokumentiert Folgendes funktionierte für mich, wenn keine der anderen Antworten funktionierte:
Tools/NuGet Package Manager/Paket-Manager-Konsole
Update-Package -ProjectName MyProjectName -reinstall
In meinem Fall hat keine der oben genannten Lösungen funktioniert. Ich löste mich durch Rechtsklick auf die Referenz
System.Net.Http.Formatting
aus Visual Studio und setzen Sie die Eigenschaft Copy Local to true .
Ich hoffe das ist irgendwie nützlich.
Dieser ärgerliche Fehler wurde für mich behoben, indem Sie Visual Studio schließen und erneut öffnen. Dann die Lösung neu aufbauen und alles hat wieder funktioniert. Entschuldigung für die Mist-Antwort, aber ich denke, es ist eine Antwort wert, weil sie es für mich gelöst hat.
Für mich war es so einfach wie
Microsoft.AspNet.WebApi.Client
aus dem Paketordner in Windows ExplorerIch war da mit dem gleichen Problem konfrontiert
System.Net.Http.Formatting
version, die in webconfig geschrieben wurde, war 5.0.3, aber im Bin-Ordner war die Bibliothek System.Net.Http.Formatting-Version 4.0.2
also habe ich einfach mit der gleichen bin ersetzt
mach einfach dieses saubere Projekt und baue
Das Hinzufügen von wenigen Zeilen in WebApi.config funktioniert für mich nach dem Aktualisieren des neuen Nuget-Pakets nicht
var setting = config.Formatters.JsonFormatter.SerializerSettings;
setting.ContractResolver = new CamelCasePropertyNamesContractResolver();
setting.Formatting = Formatting.Indented;
Vergiss nicht, Namespace hinzuzufügen:
using Newtonsoft.Json.Serialization;
using Newtonsoft.Json;
VS2019: Extras -> Nuget Package Manager -> Package Manager-Einstellungen -> Aktivieren Sie im Abschnitt "Paketwiederherstellung" zwei Optionen. Gehen Sie danach zum Projektpaketordner und löschen Sie alle darin enthaltenen untergeordneten Ordner (für keinen Fehler mehr). Anschließend lädt Nuget alle Pakete neu herunter und das Projekt sollte ohne Referenz ausgeführt werden.
Möglicherweise müssen Sie die Bibliotheksreferenz im Eigenschaftendialogfeld auf "Copy Local = True" setzen. Klicken Sie im Visual Studio auf "Verweise" und dann mit der rechten Maustaste auf die fehlende Referenz. Klicken Sie im Kontextmenü auf "Eigenschaften". Sie sollten die lokale Einstellung kopieren sehen.
In meinem Fall funktionierte keines der oben genannten Probleme, jedoch löste das Problem 5.2.3.0 durch 4.0.0.0.
Für diejenigen, die .NET Standard project in Kombination mit .NET Framework projects verwenden:
In der .NET Standard-Methode werden Pakete, die in einem .NET Standard-Projekt enthalten sind, in anderen .NET Core- und .NET Standard-Projekten korrekt verwendet.
Wenn Sie sich in .NET Framework auf ein .NET Standard-Projekt aus einem .NET Framework (MVC) -Projekt beziehen, müssen Sie dieselben Nuget-Pakete manuell herunterladen und installieren.
Die Antwort auf meine Frage war also, dass ich Microsoft.AspNet.WebApi.Client
im Webprojekt (.NET Framework) herunterladen und installieren musste, das ein .NET-Standardprojekt verwendet, für das Microsoft.AspNet.WebApi.Client
erforderlich ist. Ich hatte dies bereits installiert, aber es gab einen Versionsunterschied.
Ich füge diese Antwort einfach hinzu, damit andere sie sehen können. Vielleicht hat sie die Frage von OP nicht direkt beantwortet, aber es hat mir Zeit gespart, indem ich dies zuerst überprüfte, anstatt die Antworten mit den besten Stimmen zu machen.
Was ich getan habe, um dieses Problem zu lösen, ist
Gehen Sie zum NuGet-Paketmanager.
Wählen Sie Updates aus (im linken Bereich).
Aktualisieren Sie die WebApi-Komponenten
Danach lief das Projekt fehlerfrei.