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.

1voto

adriy Punkte 11

Nach einiger Zeit, um dieses Problem zu lösen. Fügen Sie einfach eine Package-Quelle mit der Quelle https://api.nuget.org/v3/index.json hinzu, um den Fehler auf meiner Seite zu beheben.

1voto

JosephDoggie Punkte 1422

Dies hat für mich funktioniert, verstehe nicht vollständig warum:

Wenn Sie ein Repository haben:

  1. Entfernen Sie den lokalen Ordner, indem Sie seinen Namen ändern (z.B. durch Hinzufügen von __BAK am Ende)

  2. Holen Sie den Code erneut aus dem Repository

Ich hatte keine Änderungen vorgenommen, noch waren welche beabsichtigt, aber aus irgendeinem Grund hat es funktioniert, den Code erneut aus dem Repository zu holen (in meinem Fall ADO basierend auf TFVC).

Natürlich funktioniert dies nicht in allen Fällen und erfordert, dass eine funktionsfähige Version im Repository gespeichert ist.

Es war jedoch wahrscheinlich einfacher für mich als jede andere Lösung.

Übrigens, als ich versuchte, das fehlende Paket erneut hinzuzufügen, war die verfügbare Versionsnummer von Nuget anders, und das hätte alle möglichen Probleme verursachen können, also habe ich diese potenzielle Lösung aufgegeben.

1voto

Alon Kogan Punkte 2820

Wenn Sie zusätzliche Projekte in Ihrer Lösung haben:

Öffnen Sie jedes davon einzeln.

  • Klicken Sie mit der rechten Maustaste auf das Projekt und wählen Sie Eigenschaften
  • Ändern Sie Ihr Ziel-Framework auf die Version, die Sie anstreben - Dies sollte die gleiche Version für jedes andere Projekt in der Lösung sein.
  • Klicken Sie mit der rechten Maustaste auf die Lösung und wählen Sie NuGet-Pakete verwalten...
  • Überprüfen Sie jeden Paket und suchen Sie nach dem gelben Ausrufezeichen. Entfernen Sie unnötige Pakete.
  • Jedes veraltete Paket sollte aktualisiert werden (achten Sie auf die Versionsnummer, möglicherweise benötigen Sie nicht das neueste Paket, wenn es Ihren Code zerstört)
  • Wenn das Aktualisieren nicht funktioniert, entfernen Sie diese Pakete weiter von ihrem Abhängigkeitsursprung - Vergessen Sie nicht, die Namen aufzuschreiben, sodass Sie nicht vergessen, sie wieder hinzuzufügen.

Nachdem alle Pakete entfernt oder aktualisiert wurden, bereinigen Sie die Lösung und erstellen Sie sie neu.

Gehen Sie zu und klicken Sie auf Tools->NuGet-Paket-Manager->Paket-Manager-Einstellungen->Alle NuGet-Speicher löschen

Gehen Sie zum nächsten Projekt in der Hauptlösung.

Viel Glück

1voto

Natrium Punkte 29881

Für mich nutze Visual Studio 2022 mit .NET Framework 4.8.

Die Projekte in meiner Lösung waren im sdk-style, aber das neu hinzugefügte im traditionellen Projektformat.

Das Ändern des neuen Projekts in den sdk-style hat das Problem gelöst.

0voto

Sofia Khwaja Punkte 1639

Ich habe einen Ordner namens '.nuget' im Lösungsroot-Ordner erstellt, dann die Datei 'NuGet.Config' in diesem Ordner mit folgendem Inhalt hinzugefügt

Dann habe ich die Datei '.nuGet.targets' wie folgt erstellt $(MSBuildProjectDirectory)..\

    false

    false

    true

    false

    $([System.IO.Path]::Combine($(SolutionDir), ".nuget"))
    $([System.IO.Path]::Combine($(ProjectDir), "packages.config"))
    $([System.IO.Path]::Combine($(SolutionDir), "packages"))

    $(SolutionDir).nuget
    packages.config
    $(SolutionDir)packages

    $(NuGetToolsPath)\nuget.exe
    @(PackageSource)

    "$(NuGetExePath)"
    mono --runtime=v4.0.30319 $(NuGetExePath)

    $(TargetDir.Trim('\\'))

    -RequireConsent

    $(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)"  $(RequireConsentSwitch) -o "$(PackagesDir)"
    $(NuGetCommand) pack "$(ProjectPath)" -p Configuration=$(Configuration) -o "$(PackageOutputDir)" -symbols

        RestorePackages;
        $(BuildDependsOn);

        $(BuildDependsOn);
        BuildPackage;

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