430 Stimmen

Dieses Projekt verweist auf NuGet-Paket(e), die auf diesem Computer fehlen.

Ich habe eine ASP.NET MVC5-Anwendung, die gestern funktioniert hat und jetzt diesen Fehler bekomme, wenn ich versuche zu bauen:

Dieses Projekt verweist auf NuGet-Paket(e), die auf diesem Computer fehlen.

Ich habe die beiden Optionen angekreuzt, die es NuGet erlauben, fehlende Pakete automatisch herunterzuladen und zu installieren. Ich habe auch versucht, alle Dateien im Packages-Ordner zu löschen und dann NuGet sie neu herunterladen zu lassen. Auch wenn ich NuGet öffne und nach Updates suche, sagt es, dass keine installiert werden müssen. Ich kann nicht herausfinden, was ich sonst noch tun soll, um dieses erstaunlich nervige Problem zu lösen.

Ich habe auch das NuGet-Wiederherstellen aktiviert, indem ich mit der rechten Maustaste auf das Projekt klicke und diese Option auswähle. Es hat dann einen NuGet-Ordner und drei Elemente in diesem Ordner hinzugefügt und tut nichts, um das Problem zu lösen. Ich habe versucht, erneut zu bauen und erhalte immer noch den gleichen Fehler.

2voto

Ich hatte dieses Problem, als ich einen neuen Computer von meinem Unternehmen bekam und versuchte, das Projekt nach dem Klonen mit Git zu erstellen. Das Problem war, dass meine NuGet-Einstellungen kein entferntes Repository enthielten, von dem Pakete abgerufen werden konnten. Nachdem ich den FAQ auf NuGet.org gefolgt bin, fand ich dies heraus:

Ich sehe nuget.org nicht in meiner Liste der Repositories, wie bekomme ich es zurück?

  • Fügen Sie https://api.nuget.org/v3/index.json zu Ihrer Liste der Quellen hinzu, oder Löschen Sie %appdata%\.nuget\NuGet.Config (Windows) oder ~/.nuget/NuGet/NuGet.Config (Mac/Linux) und lassen Sie NuGet es neu erstellen.

In meinem Fall gab es überhaupt kein %appdata%\.nuget Verzeichnis auf meinem Rechner, also folgte ich diesen Schritten innerhalb von Visual Studio, um das Problem zu beheben:

  1. Klicken Sie auf Tools > NuGet-Paket-Manager > Paket-Manager-Einstellungen in der Symbolleiste
  2. Wählen Sie NuGet-Paket-Manager > Paketquellen aus der Liste auf der linken Seite
  3. Klicken Sie oben rechts auf das grüne +, um eine neue Quelle hinzuzufügen
  4. Setzen Sie den Name:-Wert auf NuGet.org
  5. Setzen Sie den Quelle:-Wert auf https://api.nuget.org/v3/index.json

Danach konnte NuGet die Pakete herunterladen, die es nicht finden konnte.

Um die Fehler im Build loszuwerden, habe ich diese Schritte unternommen:

  1. Löschen Sie die Verzeichnisse bin und obj in der Lösung
  2. Klicken Sie auf Build > Lösung neu erstellen in der Symbolleiste

Nach Abschluss des Builds waren die Fehler verschwunden.

2voto

user4569838 Punkte 21

Dies sind die Schritte, die ich verwendet habe, um das Problem zu beheben:

Um NuGet-Pakete zu Ihrer Lösung hinzuzufügen:

  1. Klicken Sie mit der rechten Maustaste auf das Projekt (nicht die Lösung), zu dem Sie NuGet-Pakete hinzufügen möchten.
  2. Wählen Sie: NuGet-Pakete verwalten
  3. In dem Popup-Fenster haben Sie auf der linken Seite drei Auswahlmöglichkeiten. Wenn Sie Online > Microsoft & .NET wählen, können Sie das Microsoft ASP.NET Web API 2.2-Paketgruppierungspaket installieren (oder ein anderes Paket, das Sie benötigen - meins war dieses).
  4. Klicken Sie jetzt mit der rechten Maustaste auf Ihre Lösung (nicht das Projekt) und wählen Sie NuGet-Paketwiederherstellung aktivieren. Dadurch werden die Pakete automatisch beim Kompilieren heruntergeladen.

1voto

Alexander Christov Punkte 8620

Das Bearbeiten von .sln- und .csproj-Dateien ist nicht immer einfach oder wünschenswert. Sobald Sie die Fehlerliste erhalten, können Sie sehen, welche Projekte fehlende Pakete haben (auch der Verweisknoten gibt in der Regel an, dass Assemblies fehlen, es sei denn, Pakete sind Quellcode, Ressourcen, Bilder oder einfach textbasierte).

Das Entfernen und erneute Hinzufügen der Pakete ist keine gute Idee, es sei denn, Sie verwenden die neueste Version des Pakets. Andernfalls sollten Sie auf Überraschungen vorbereitet sein, nicht immer angenehme.

Wenn das Paket beispielsweise EntityFramework ist, erhalten Sie aus der NuGet-Galerie die neueste Version, die zum Zeitpunkt der Abfassung dieses Kommentars 6.1.3 ist.

Vielleicht ist der sicherste Weg, mit der Situation umzugehen, das schrittweise Wiederherstellen der fehlenden Pakete. Ja, eine etwas schmerzhafte Übung, aber die Verfolgung subtiler Fehler aufgrund unterschiedlicher Paketversionen kann viel unangenehmer sein.

Das gesagt haben, und lassen Sie EntityFramework erneut das fehlende Paket sein, können Sie den folgenden Befehl in der Paket-Manager-Konsole ausgeben:

PM> Install-Package EntityFramework -Version 6.0.1 

Dadurch wird die korrekte Version installiert, nämlich 6.0.1, die in der packages.config-Datei angegeben ist:

1voto

sarh Punkte 5926

Ich hatte den gleichen Fehler, aber in meinem Fall hatte er überhaupt nichts mit NuGet-Paketen zu tun. Meine Lösung hatte ein Projekt, das auf andere Projekte verweist, die nicht Teil meiner Lösung waren und nicht gebaut wurden. Nachdem ich sie mit einer anderen Lösung gebaut hatte (oder ich könnte sie auch in meine Lösung aufnehmen) und meine Lösung in Visual Studio erneut geöffnet hatte, war das Problem gelöst.

1voto

Srini Punkte 668

Ich hatte dasselbe Problem, als ich die Klassenbibliothek in meine MVC-Webanwendung eingebunden habe.

Das Problem war eine Versionsinkompatibilität des NuGet-Pakets zwischen den beiden Projekten.

Beispiel: Meine Klassenbibliothek hatte log4net 1.2.3, aber meine Webanwendung hatte 1.2.6.

Lösung: Stellen Sie sicher, dass beide Projekte die gleiche Versionsnummer referenzieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X