Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
När du installerar, uppdaterar eller återställer ett paket hanterar NuGet paket- och paketinformation i flera mappar utanför projektstrukturen:
| Namn | Plats |
|---|---|
| globala paket |
|
| http-cache |
|
| temp | %temp%\NuGetScratch/tmp/NuGetScratch/tmp/NuGetScratch<username> |
| plugins-cache4.8+ |
|
Anmärkning
NuGet 3.5 och tidigare använder packages-cache i stället för http-cache, som finns i %localappdata%\NuGet\Cache.
Genom att använda mapparna cache och globala paket undviker NuGet vanligtvis att ladda ned paket som redan finns på datorn, vilket förbättrar prestandan för installation, uppdatering och återställning. När du använder PackageReference undviker mappen global-packages också att behålla nedladdade paket i projektmappar, där de oavsiktligt kan läggas till i källkontrollen och minskar NuGets övergripande inverkan på datorlagringen.
När du uppmanas att hämta ett paket letar NuGet först efter i mappen global-packages . Om den exakta versionen av paketet inte finns där kontrollerar NuGet alla icke-HTTP-paketkällor. Om paketet fortfarande inte hittas söker NuGet efter paketet i http-cachen om du inte anger --no-http-cache med dotnet.exe kommandon eller -NoHttpCache kommandon nuget.exe . Om paketet inte finns i cacheminnet, eller om cacheminnet inte används, hämtar NuGet paketet via HTTP .
Mer information finns i Vad händer när ett paket installeras?.
globala paket
Mappen global-packages är där NuGet installerar alla nedladdade paket.
Varje paket expanderas helt till en undermapp som matchar paketidentifieraren och versionsnumret.
Projekt som använder PackageReference-formatet använder alltid paket direkt från den här mappen.
När du använder packages.configinstalleras paket i mappen global-packages och kopieras sedan till projektets packages mapp.
Rensa katalogen global-packages
Katalogen global-packages måste rensas manuellt för att ta bort paket som inte längre används.
Du kan göra detta med dotnet nuget locals global-packages --clean kommandot eller knappen "rensa NuGet lokala resurser" i Visual Studio-alternativen (motsvarande dotnet nuget locals all --clear).
När du har rensat katalogen global-packages måste du återställa dina projekt igen för att ladda ned alla nödvändiga paket igen.
I Visual Studio kan du behöva läsa in lösningen igen för att rensa NuGets "uppdaterade återställningar"-cache, eller göra en kommandoradsåterställning (till exempel i Visual Studio-terminalfönstret) med msbuild -t:restore your.sln.
Om du bara vill rensa oanvända paket är det en tvåstegsprocess.
För det första finns det en nuget.config inställning updatePackageLastAccessTime som ska aktiveras.
Den här inställningen gör att NuGet uppdaterar varje pakets .nupkg.metadata fil när den används i en återställning.
När återställningen körs, men ett projekt anses vara uppdaterat, uppdateras inte pakettidsstämplarna.
Filen .nupkg.metadata är den sista filen som NuGet skapar när du laddar ned och extraherar paket under en återställning eller installation, och är den fil som återställningen använder för att kontrollera om ett paket har extraherats.
För det andra kör du ett verktyg för att utföra rensningen.
När inställningen updatePackageLastAccessTime har aktiverats rekommenderar vi att du väntar några dagar för att se till att alla paket som du använder regelbundet har fått sina tidsstämplar uppdaterade.
NuGet tillhandahåller för närvarande inte något verktyg eller kommando för att göra detta. Du kan lägga till en 👍 reaktion på det här GitHub-problemet för att signalera ditt intresse. Vissa communitymedlemmar har skapat egna NuGet-verktyg med öppen källkod som du kan söka efter.
Om du ska skriva ett eget rensningsverktyg är det viktigt att .nupkg.metadata filen tas bort om någon av de andra paketfilerna tas bort, så vi rekommenderar att filen tas bort först.
Annars kan projekt som refererar till paketet ha oväntat beteende.
Om du skriver ett rensningsverktyg i .NET kan du överväga att använda ConcurrencyUtilities.ExecuteWithFileLocked[Async](..) från NuGet.Common-paketet och skicka den fullständiga nupkg-sökvägen för paketkatalogen som du ska ta bort som nyckel för att undvika att ta bort ett paket som återställningen försöker extrahera samtidigt.
Katalogen för globala paket kan hittas programmerbart med NuGet.Configuration package.
Använd Settings.LoadDefaultSettings(path) för att hämta en ISettings instans (du kan skicka null som sökväg eller skicka en katalog om du vill hantera lösningar med en nuget.config som omdirigerar katalogen global-packages) och sedan använda SettingsUtility.GetGlobalPackagesFolder(settings).
Du kan också köra dotnet nuget locals global-packages --list som en underordnad process och parsa utdata.
http-cache
NuGet cachelagrar kopior av de flesta NuGet-feedkommunikationer (exklusive sökning), ordnade i undermappar för varje paketkälla. Paket expanderas inte och filer med ett senast ändrat datum som är äldre än 30 minuter anses vanligtvis ha upphört att gälla.
temperatur
En mapp där NuGet kan lagra temporära filer under olika åtgärder.
plugin-cache
En mapp där NuGet lagrar resultatet från begäran om åtgärdsanspråk. Mer information finns i referensen för plattformoberoende insticksprogram .
Visa mappplatser
Du kan visa platser med hjälp av nuget locals-kommandot:
# Display locals for all folders: global-packages, http cache, temp and plugins cache
nuget locals all -list
Typiska utdata (Windows; "user1" är det aktuella användarnamnet):
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
(package-cache används i NuGet 2.x och visas med NuGet 3.5 och tidigare.)
Du kan också visa mappplatser med hjälp av kommandot dotnet nuget locals:
dotnet nuget locals all --list
Typiska utdata (Mac; "user1" är det aktuella användarnamnet):
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
Typiska utdata (Linux; "user1" är det aktuella användarnamnet):
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
Om du vill visa platsen för en enskild mapp använder du http-cache, global-packages, temp, eller plugins-cache i stället för all.
Rensa lokala mappar
Command-line
Om du stöter på problem med paketinstallationen eller på annat sätt vill se till att du installerar paket från ett fjärrgalleri använder locals --clear du alternativet (dotnet.exe) eller locals -clear (nuget.exe), anger mappen för att rensa eller all rensa alla mappar:
# 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
Paket som används av projekt som för närvarande är öppna i Visual Studio rensas inte från mappen global-packages .
Visual Studio
Visual Studio stöder rensning av alla lokala mappar i "NuGet Package Manager"-alternativen som finns under menykommandot Verktyg > NuGet Package Manager > Package Manager-inställningar .
På sidan Allmänt väljer du Rensa NuGet-lokala resurser. När den här åtgärden har startats kan den inte avbrytas. Ett förloppsfält visas och innehåller kommandots slutgiltiga status.
Utdatafönstret när du väljer Visa utdata från "Package Manager" visar ytterligare information om kommandot Clear, inklusive eventuella felmeddelanden.
Rensa Lokala NuGet-resurser
Hantering av cachen är för närvarande inte tillgängligt via Package Manager-konsolen.
Mer information finns i NuGet-alternativ i Visual Studio.
Felsökningsfel
Följande fel kan inträffa när du använder nuget locals eller dotnet nuget locals:
Fel: Processen kan inte komma åt filpaketet <> eftersom det används av en annan process eller om det inte gick att rensa lokala resurser: Det går inte att ta bort en eller flera filer
En eller flera filer i mappen används av en annan process. Till exempel är ett Visual Studio-projekt öppet som refererar till paket i mappen global-packages . Stäng dessa processer och försök igen.
Fel: Åtkomst till sökvägen <> nekas eller Katalogen är inte tom
Du har inte behörighet att ta bort filer i cacheminnet. Ändra mappbehörigheterna om möjligt och försök igen. Annars kontaktar du systemadministratören.
Fel: Den angivna sökvägen, filnamnet eller båda är för långa. Det fullständigt kvalificerade filnamnet måste vara mindre än 260 tecken och katalognamnet måste vara mindre än 248 tecken.
Förkorta mappnamnen och försök igen.