Wie kann ich den NuGet-Paketcache über die Befehlszeile löschen?

405

Ich kann den NuGet-Paketcache meines Entwicklungscomputers über das Visual Studio-Menü ExtrasOptionenNuGet- Paketmanager → Allgemein : Clear Package Cachelöschen.

Ich möchte dies in der Kommandozeile tun. Leider kann ich keinen zugehörigen Befehlszeilenschalter für nuget.exe finden.

Habe ich etwas verpasst?

p.pickardou
quelle
10
Diese Option fehlt in meiner 2015 VS Version
spankmaster79
1
ja es fehlt Also benutze ich die akzeptierte Antwort.
g.pickardou

Antworten:

633

Laden Sie zunächst das NuGet-Befehlszeilentool hier herunter .

Öffnen Sie als Nächstes eine Eingabeaufforderung und cddas Verzeichnis, in das nuget.exeheruntergeladen wurde.

Sie können die lokalen Caches mit diesem Befehl auflisten:

nuget locals all -list

Sie können alle Caches mit diesem Befehl löschen:

nuget locals all -clear

Referenz: https://docs.nuget.org/consume/command-line-reference

rm8x
quelle
10
Funktioniert gut für 3.3, aber nur für den aktuellen Benutzer. Ich hatte ein Problem mit einem beschädigten lokalen Cache auf unserem Build-Server, der (leider) unter dem lokalen System ausgeführt wurde, sodass der Cache nicht aufgelistet war. Der tatsächliche Speicherort war `C: \ Windows \ SysWOW64 \ config \ systemprofile \ AppData \ Local \ NuGet \ Cache`
Zhaph - Ben Duguid
1
Möglicherweise sollten Sie die Löschoperation unter demselben Benutzer wie die Erstellungsoperation ausführen. Entweder mit der Konfiguration eines dedizierten Build-Benutzers oder mit einem Trick, um das Löschen unter Lokales System auszuführen.
g.pickardou
2
Gibt es Möglichkeiten, bestimmte NuGet aus dem Cache zu entfernen? Zum Beispiel: Ich möchte NuGet X aus dem Cache entfernen und weiß nicht, wo sich der NuGet-Cache befindet. In dieser Situation kann ich "X" allein aus dem Cache entfernen
user3610920
19
Ich musste laufen nuget update -self, um die nuget.exe zu aktualisieren, die ich von diesem Link heruntergeladen hatte, sonst bekam ich den FehlerUnknown commmand: 'locals'
ajbeaven
1
Stellen Sie sicher, dass Sie Ihren VS schließen, da devenv.exemöglicherweise einige Paketordner blockiert werden und diese nicht gelöscht werden.
Sharif
227

Gehen Sie in Visual Studio 2017 zum Menü ExtrasNuGet Package ManagerPackage Manager-Einstellungen . Sie können eine Schaltfläche herausfinden , Clear All NuGet Cache(s):

Geben Sie hier die Bildbeschreibung ein

Wenn Sie .NET Core verwenden, können Sie den Cache mit diesem Befehl leeren, der ab .NET Core Tools 1.0 funktionieren sollte:

dotnet nuget locals all --clear
Ricky
quelle
7
Also ist es zurück! :-). Ich bin gespannt, ob es in VS 2019 wieder entfernt wird :-)
g.pickardou
13
Befehlszeilennutzung dotnet nuget locals all --clearist sehr nützlich, danke
Boggin
1
Befehl dotnet nuget locals all --clearfunktionierte perfekt. Ich musste kein zusätzliches Nuget-Cmd-Tool installieren. Meine SSD kann wieder atmen!
Jiří Kuba
87

Das Dienstprogramm nuget.exe verfügt nicht über diese Funktion. Da der NuGet-Cache jedoch lediglich ein Ordner auf Ihrem Computer ist, können Sie die Dateien manuell löschen. Fügen Sie dies einfach Ihrer Batch-Datei hinzu:

del %LOCALAPPDATA%\NuGet\Cache\*.nupkg /q
Kiliman
quelle
5
Zum Zeitpunkt der Anfrage war dies die einzige Lösung, ebenso die beste Antwort. Jetzt habe ich die Markierung aufgehoben und die Antwort von @ rmoore gutgeschrieben, nachdem ich sie ausprobiert habe.
g.pickardou
27

Für mich musste ich hier reingehen:

%userprofile%\.nuget\packages
Bowofola
quelle
2
Dies ist der richtige Weg, auf dem alle Nugets heruntergeladen und aufbewahrt werden
Alok Rajasukumaran
2
Und ich hatte 2,04 GB Nuget-Pakete: o
Alok Rajasukumaran
19
2,04 GB sind ungefähr gleichbedeutend mit node_modules für eine "Hallo Welt" -Knoten-App;)
voraussichtlich
20

Dies trägt zur Antwort von rm8x bei .

Laden Sie das NuGet-Befehlszeilentool herunter und installieren Sie es.

Listen Sie alle unsere Einheimischen auf:

$ nuget locals all -list
http-cache: C:\Users\MyUser\AppData\Local\NuGet\v3-cache
packages-cache: C:\Users\MyUser\AppData\Local\NuGet\Cache
global-packages: C:\Users\MyUser\.nuget\packages\

Wir können diese jetzt manuell löschen oder, wie von rm8x vorgeschlagen , verwenden nuget locals all -clear.

Shaun Luttin
quelle
Was bringt es, zu löschen, wenn Nuget bei jedem Build all diese generiert? Warum erstellt Nuget tatsächlich so viele Ordner?
Batmaci
2
@batmaci , weil im Laufe der Zeit Pakete wurden aktualisiert , und Sie werden am Ende mit Batmaci 1.0, Batmaci 1.1, Batmaci 1.2wo alles was Sie brauchen ist das späteste
Simon_Weaver
Wir hatten gelegentlich Probleme auf unserem Build-Server, weil wir keine NuGet-Pakete im Cache gefunden haben. Wir haben es gelöst, indem wir den Cache immer zu Beginn des Builds geleert haben.
Steve Wright
14

Beachten Sie, dass dnxes einen anderen Cache zum Einspeisen von HTTP-Ergebnissen gibt:

Microsoft .NET Development Utility Clr-x86-1.0.0-rc1-16231
   CACHE https://www.nuget.org/api/v2/
   CACHE http://192.168.148.21/api/odata/

Womit du klären kannst

dnu clear-http-cache

Jetzt müssen wir nur noch herausfinden, wie der Befehl im neuen dotnetCLI-Tool lauten wird .

... und hier ist es:

dotnet restore --no-cache
KCD
quelle
Ich würde mit dem obigen Ansatz von Ruslan gehen, da ich einige Probleme mit Paketen habe, die sogar - no-cache
Alexz
Das Laufen dotnet restore --no-cachefunktionierte für mich, aber ich musste es von einer Powershell-Eingabeaufforderung aus tun, die als Administrator ausgeführt wurde
Shanabus
10

dotnet nuget locals all --clear

Wenn Sie .NET Core verwenden.

Jim Aho
quelle
Ich würde vorschlagen, dies zu tun, bevor Sie zum Mittagessen gehen.
Helzgate
5

Wenn Sie den NuGet-Cache für Ihren Build-Server / Agenten löschen müssen, finden Sie den Cache für NuGet-Pakete hier:

%windir%/ServiceProfiles/[account under build service runs]\AppData\Local\NuGet\Cache

Beispiel:

C:\Windows\ServiceProfiles\NetworkService\AppData\Local\NuGet\Cache
Khablander
quelle
1
Ich habe mir erlaubt, den Pfad zu markieren, um ihn besser lesbar zu machen, und [windows dir] durch zu ersetzen %windir%, wodurch Sie automatisch in das richtige Verzeichnis gelangen, wenn Sie in z. B. Windows Explorer eingegeben werden.
Kjartan
3

Sie können auch PowerShell verwenden (genau wie ich).

Zum Beispiel:

rm $env:LOCALAPPDATA\NuGet\Cache\*.nupkg

Oder "leiser" Modus (ohne Fehlermeldungen):

rm $env:LOCALAPPDATA\NuGet\Cache\*.nupkg 2> $null
honzakuzel1989
quelle