Gestione delle cartelle dei pacchetti globale, della cache e temporanea
Quando si installa, aggiorna o ripristina un pacchetto, NuGet gestisce i pacchetti e le informazioni sui pacchetti in varie cartelle all'esterno della struttura del progetto:
Nome | Descrizione e posizione (per utente) |
---|---|
pacchetti globali | La cartella global-packages è la posizione in cui NuGet installa i pacchetti scaricati. Ogni pacchetto viene espanso completamente in una sottocartella corrispondente all'identificatore del pacchetto e al numero di versione. I progetti che usano il formato PackageReference usano sempre i pacchetti direttamente da questa cartella. Quando si usa il file packages.config, i pacchetti vengono installati nella cartella global-packages e quindi copiati nella cartella packages del progetto.
|
http-cache | Gestione pacchetti di Visual Studio (NuGet 3.x+) e lo strumento dotnet archiviano copie dei pacchetti scaricati nella cache (salvati come file .dat ), organizzati in sottocartelle per ogni origine di pacchetti. I pacchetti non vengono espansi e la cache ha una scadenza di 30 minuti.
|
temp | Cartella in cui NuGet archivia i file temporanei durante le varie operazioni.%temp%\NuGetScratch /tmp/NuGetScratch /tmp/NuGetScratch<username> |
plugins-cache 4.8+ | Cartella in cui NuGet archivia i risultati dalla richiesta di attestazioni delle operazioni.
|
Nota
NuGet 3.5 e versioni precedenti usano la cartella packages-cache invece di http-cache, che si trova in %localappdata%\NuGet\Cache
.
Tramite le cartelle della cache e global-packages, NuGet evita in genere il download di pacchetti già esistenti nel computer, con conseguente miglioramento delle prestazioni di installazione, aggiornamento e ripristino. Quando si usa PackageReference, la cartella global-packages consente anche di evitare di mantenere i pacchetti scaricati all'interno delle cartelle di progetto, da cui potrebbero essere inavvertitamente aggiunti al controllo del codice sorgente, nonché di ridurre l'impatto complessivo di NuGet sullo spazio di archiviazione del computer.
Quando viene richiesto di recuperare un pacchetto, NuGet controlla prima di tutto nella cartella global-packages. Se nella cartella non è disponibile la versione esatta del pacchetto, NuGet controlla tutte le origini di pacchetti non HTTP. Se il pacchetto non viene trovato, NuGet cerca il pacchetto nella cartella http-cache a meno che non si specifichi --no-http-cache
con i comandi dotnet.exe
o -NoHttpCache
con i comandi nuget.exe
. Se il pacchetto non è presente nella cache o la cache non viene usata, NuGet recupera il pacchetto tramite HTTP.
Per altre informazioni, vedere Cosa accade quando viene installato un pacchetto.
Visualizzazione delle posizioni delle cartelle
È possibile visualizzare le posizioni con il comando nuget locals:
# Display locals for all folders: global-packages, http cache, temp and plugins cache
nuget locals all -list
Output tipico (Windows; "user1" è il nome utente corrente):
http-cache: C:\Users\user1\AppData\Local\NuGet\v3-cache
global-packages: C:\Users\user1\.nuget\packages\
temp: C:\Users\user1\AppData\Local\Temp\NuGetScratch
plugins-cache: C:\Users\user1\AppData\Local\NuGet\plugins-cache
(la cartella package-cache
viene usata in NuGet 2.x e visualizzata con NuGet 3.5 e versioni precedenti.)
È anche possibile visualizzare le posizioni delle cartelle con il comando dotnet nuget locals:
dotnet nuget locals all --list
Output tipico (Mac; "user1" è il nome utente corrente:
info : http-cache: /home/user1/.local/share/NuGet/v3-cache
info : global-packages: /home/user1/.nuget/packages/
info : temp: /tmp/NuGetScratch
info : plugins-cache: /home/user1/.local/share/NuGet/plugins-cache
Output tipico (Linux; "user1" è il nome utente corrente:
info : http-cache: /home/user1/.local/share/NuGet/v3-cache
info : global-packages: /home/user1/.nuget/packages/
info : temp: /tmp/NuGetScratchuser1
info : plugins-cache: /home/user1/.local/share/NuGet/plugins-cache
Per visualizzare la posizione di una singola cartella, usare http-cache
, global-packages
, temp
o plugins-cache
invece di all
.
Cancellazione delle cartelle locali
Se si verificano problemi di installazione dei pacchetti o si vuole essere certi di eseguire l'installazione dei pacchetti da una raccolta remota, usare l'opzione locals --clear
(dotnet.exe) o locals -clear
(nuget.exe), specificando la cartella da cancellare oppure all
per cancellare tutte le cartelle:
# Clear the 3.x+ cache (use either command)
dotnet nuget locals http-cache --clear
nuget locals http-cache -clear
# Clear the 2.x cache (NuGet CLI 3.5 and earlier only)
nuget locals packages-cache -clear
# Clear the global packages folder (use either command)
dotnet nuget locals global-packages --clear
nuget locals global-packages -clear
# Clear the temporary cache (use either command)
dotnet nuget locals temp --clear
nuget locals temp -clear
# Clear the plugins cache (use either command)
dotnet nuget locals plugins-cache --clear
nuget locals plugins-cache -clear
# Clear all caches (use either command)
dotnet nuget locals all --clear
nuget locals all -clear
Gli eventuali pacchetti usati dai progetti aperti in Visual Studio non vengono cancellati dalla cartella global-packages.
A partire da Visual Studio 2017, usare il comando di menu Strumenti > NuGet Gestione pacchetti > Gestione pacchetti Impostazioni, quindi selezionare Cancella tutte le cache NuGet. La gestione delle cache non è attualmente disponibile tramite la console di Gestione pacchetti. In Visual Studio 2015 usare invece i comandi dell'interfaccia della riga di comando.
Risoluzione degli errori
Durante l'uso di nuget locals
o dotnet nuget locals
possono verificarsi gli errori seguenti:
Errore: Il processo non è in grado di accedere al pacchetto di file <perché viene usato da un altro processo o la cancellazione delle risorse locali non è riuscita: impossibile eliminare uno o> più file
Uno o più file nella cartella sono in uso da un altro processo. Ad esempio, è aperto un progetto di Visual Studio che fa riferimento ai pacchetti nella cartella global-packages. Chiudere i processi e riprovare.
Errore: l'accesso al percorso <> è negato o La directory non è vuota
Non si è autorizzati a eliminare i file nella cache. Modificare le autorizzazioni della cartella, se possibile, e riprovare. In caso contrario, contattare l'amministratore di sistema.
Errore: Percorso e/o nome di file specificato troppo lungo. Il nome di file completo deve contenere meno di 260 caratteri, mentre il nome di directory deve contenere meno di 248 caratteri.
Abbreviare i nomi delle cartelle e riprovare.