Come posso cancellare la cache del pacchetto NuGet usando la riga di comando?


405

Posso cancellare la cache del pacchetto NuGet del mio computer di sviluppo usando il menu Visual Studio StrumentiOpzioniGestione pacchetti NuGetGenerale : Clear Package Cachepulsante.

Vorrei farlo sulla riga di comando. Sfortunatamente, non riesco a trovare un interruttore della riga di comando correlato per nuget.exe.

Ho dimenticato qualcosa?


10
questa opzione non è presente nella mia versione VS 2015
spankmaster79,

1
si manca. Quindi sto usando la risposta accettata.
g.pickardou,

Risposte:


634

Innanzitutto, scarica lo strumento da riga di comando NuGet da qui .

Quindi, aprire un prompt dei comandi e cdnella directory in cui è nuget.exestato scaricato.

Puoi elencare le cache locali con questo comando:

nuget locals all -list

Puoi cancellare tutte le cache con questo comando:

nuget locals all -clear

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


10
Funziona bene con 3.3 ma solo per l'utente corrente - ho avuto un problema con una cache locale corrotta sul nostro server di build che (purtroppo) era in esecuzione nel sistema locale, quindi la cache non era elencata - la posizione effettiva era `C: \ Windows \ SysWOW64 \ config \ systemprofile \ AppData \ Local \ NuGet \ Cache`
Zhaph - Ben Duguid

1
Forse dovresti eseguire l'operazione clear con lo stesso utente dell'operazione build. Con la configurazione di un utente di build dedicato o utilizzando un trucco per eseguire il clear in Sistema locale.
g.pickardou,

2
C'è qualche possibilità di rimuovere NuGet particolare dalla cache? ad esempio: voglio rimuovere NuGet X dalla cache e non sono a conoscenza della posizione della cache NuGet, in questa situazione come rimuovere "X" da solo dalla cache
user3610920

19
Ho dovuto correre nuget update -selfper aggiornare il nuget.exe che ho scaricato da questo link altrimenti ho ricevuto l'erroreUnknown commmand: 'locals'
ajbeaven

1
assicurati di chiudere il tuo VS poiché devenv.exepotrebbe bloccare alcune cartelle di pacchetti e non verranno cancellate.
Sharif,

227

In Visual Studio 2017, vai al menu StrumentiGestione pacchetti NuGetImpostazioni Gestione pacchetti . È possibile trovare un pulsante Clear All NuGet Cache(s):

Inserisci qui la descrizione dell'immagine

Se si utilizza .NET Core, è possibile cancellare la cache con questo comando, che dovrebbe funzionare con .NET Core tools 1.0:

dotnet nuget locals all --clear

7
Quindi è tornato! :-). Sono curioso di
sapere

13
l'utilizzo della riga di comando dotnet nuget locals all --clearè molto utile, grazie
Boggin

1
Il comando ha dotnet nuget locals all --clearfunzionato perfettamente. Non ho dovuto installare alcun strumento cmd nuget aggiuntivo. Il mio SSD può respirare di nuovo!
Jiří Kuba,

87

L'utilità nuget.exe non ha questa funzione, ma visto che la cache NuGet è semplicemente una cartella sul tuo computer, puoi eliminare i file manualmente. Basta aggiungere questo al tuo file batch:

del %LOCALAPPDATA%\NuGet\Cache\*.nupkg /q

5
Al momento di chiedere questa era l'unica soluzione, quindi era la risposta migliore. Ora l'ho deselezionato e ho accreditato la risposta di @ rmoore dopo averlo provato.
g.pickardou,

27

Per me sono dovuto andare qui:

%userprofile%\.nuget\packages

2
Questo è il percorso giusto in cui vengono scaricati e conservati tutti i nuget
Alok Rajasukumaran

2
E avevo pacchetti di nuget da 2,04 Gb: o
Alok Rajasukumaran

19
2,04 GB è quasi lo stesso di node_modules per un'app nodo "ciao mondo";)
tommed

20

Questo si aggiunge alla risposta di rm8x .

Scarica e installa lo strumento da riga di comando NuGet.

Elenca tutti i nostri locali:

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

Ora possiamo eliminarli manualmente o, come suggerisce rm8x , utilizzare nuget locals all -clear.


che senso ha cancellare se nuget genererà tutti quelli con ogni build? perché nuget sta davvero creando così tante cartelle?
Batmaci,

2
@batmaci perché col tempo i pacchetti vengono aggiornati e vi ritroverete con Batmaci 1.0, Batmaci 1.1, Batmaci 1.2dove tutto ciò che serve è la più recente
Simon_Weaver

Abbiamo avuto il problema occasionale sul nostro server di build per non trovare i pacchetti NuGet nella cache. Lo abbiamo risolto cancellando sempre la cache all'inizio della compilazione.
Steve Wright,

14

Si noti che dnxha una cache diversa per l'alimentazione dei risultati HTTP:

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/

Con cui puoi cancellare

dnu clear-http-cache

Ora non ci resta che scoprire quale sarà il comando sul nuovo dotnetstrumento CLI.

... ed eccolo qui:

dotnet restore --no-cache

Andrei con l'approccio sopra di Ruslan in quanto ho alcuni problemi con i pacchetti che passano anche --no-cache
Alexz

Correre ha dotnet restore --no-cachefunzionato per me, ma ho dovuto farlo da un prompt di Powershell in esecuzione come amministratore
shanabus,

10

dotnet nuget locals all --clear

Se stai utilizzando .NET Core.


Suggerirei di farlo prima di andare a pranzo.
Helzgate,

5

Se è necessario svuotare la cache NuGet per il proprio server / agente di build, è possibile trovare la cache per i pacchetti NuGet qui:

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

Esempio:

C:\Windows\ServiceProfiles\NetworkService\AppData\Local\NuGet\Cache

1
Mi sono preso la libertà di segnare il percorso per renderlo più leggibile e di sostituire [windows dir] %windir%, che ti metterà automaticamente nella directory giusta quando entri in Windows Explorer.
Kjartan,

3

Puoi usare anche PowerShell (come me).

Per esempio:

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

O modalità 'silenziosa' (senza messaggi di errore):

rm $env:LOCALAPPDATA\NuGet\Cache\*.nupkg 2> $null
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.