Správa globálních balíčků, mezipaměti a dočasných složek
Při každé instalaci, aktualizaci nebo obnovení balíčku spravuje NuGet balíčky a informace o balíčcích v několika složkách mimo strukturu projektu:
Název | Popis a umístění (na uživatele) |
---|---|
global-packages | Složka globálních balíčků je místo, kde NuGet nainstaluje všechny stažené balíčky . Každý balíček je plně rozbalený do podsložky, která odpovídá identifikátoru balíčku a číslu verze. Projekty používající formát PackageReference vždy používají balíčky přímo z této složky. Při použití packages.config se balíčky nainstalují do složky global-packages a pak se zkopírují do složky projektupackages .
|
http-cache | Visual Studio Správce balíčků (NuGet 3.x+) a dotnet kopie stažených balíčků v této mezipaměti (uložené jako .dat soubory) uspořádané do podsložek pro každý zdroj balíčku. Balíčky nejsou rozbalené a mezipaměť má dobu vypršení platnosti 30 minut.
|
temp | Složka, ve které NuGet ukládá dočasné soubory během různých operací.%temp%\NuGetScratch /tmp/NuGetScratch /tmp/NuGetScratch<username> |
moduly plug-in-cache 4.8 nebo novější | Složka, ve které NuGet ukládá výsledky z žádosti o deklarace identity operace.
|
Poznámka:
NuGet 3.5 a starší používá balíčky-mezipaměť místo http-cache, která je umístěna v %localappdata%\NuGet\Cache
.
Při použití složek mezipaměti a globálních balíčků se NuGet obecně vyhne stahování balíčků, které už v počítači existují, a zlepšuje výkon operací instalace, aktualizace a obnovení. Při použití PackageReference se složka globálních balíčků také vyhne zachování stažených balíčků uvnitř složek projektu, kde se můžou neúmyslně přidávat do správy zdrojového kódu a snižuje celkový dopad NuGetu na úložiště počítačů.
Po zobrazení výzvy k načtení balíčku se NuGet nejprve podívá do složky global-packages . Pokud neexistuje přesná verze balíčku, NuGet zkontroluje všechny zdroje balíčků, které nejsou http. Pokud se balíček stále nenajde, NuGet vyhledá balíček v mezipaměti http, pokud nezadáte --no-http-cache
příkazy dotnet.exe
nebo -NoHttpCache
nuget.exe
příkazy. Pokud balíček není v mezipaměti nebo se mezipaměť nepoužívá, NuGet načte balíček přes protokol HTTP .
Další informace najdete v tématu Co se stane při instalaci balíčku?.
Zobrazení umístění složek
Umístění můžete zobrazit pomocí příkazu nuget locals:
# Display locals for all folders: global-packages, http cache, temp and plugins cache
nuget locals all -list
Typický výstup (Windows; "user1" je aktuální uživatelské jméno):
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
používá se v NuGetu 2.x a zobrazí se s NuGetem 3.5 a starším.)
Umístění složek můžete zobrazit také pomocí příkazu dotnet nuget locals:
dotnet nuget locals all --list
Typický výstup (Mac; "user1" je aktuální uživatelské jméno):
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
Typický výstup (Linux; "user1" je aktuální uživatelské jméno):
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
Chcete-li zobrazit umístění jedné složky, použijte http-cache
, global-packages
, temp
nebo plugins-cache
místo all
.
Vymazání místních složek
Pokud narazíte na problémy s instalací balíčku nebo jinak chcete zajistit, že instalujete balíčky ze vzdálené galerie, použijte locals --clear
možnost (dotnet.exe) nebo locals -clear
(nuget.exe), určete složku, která se má vymazat, nebo all
vymazat všechny složky:
# 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
Všechny balíčky používané projekty, které jsou aktuálně otevřené v sadě Visual Studio, nejsou vymazány ze složky globálních balíčků.
Počínaje sadou Visual Studio 2017 použijte příkaz nabídky Nástroje > NuGet Správce balíčků > Správce balíčků Nastavení a pak vyberte Vymazat všechny mezipaměti NuGet. Správa mezipaměti není momentálně dostupná prostřednictvím konzoly Správce balíčků. V sadě Visual Studio 2015 místo toho použijte příkazy rozhraní příkazového řádku.
Chyby při řešení problémů
K následujícím chybám může dojít při použití nebo nuget locals
dotnet nuget locals
:
Chyba: Proces nemůže získat přístup k balíčku> souboru<, protože ho používá jiný proces nebo vymazání místních prostředků se nezdařilo: Nelze odstranit jeden nebo více souborů.
Jeden nebo více souborů ve složce se používá jiným procesem; Například projekt sady Visual Studio je otevřený, který odkazuje na balíčky ve složce global-packages . Zavřete tyto procesy a zkuste to znovu.
Chyba: Přístup k cestě> je <odepřen nebo adresář není prázdný.
Nemáte oprávnění k odstranění souborů v mezipaměti. Pokud je to možné, změňte oprávnění ke složce a zkuste to znovu. V opačném případě se obraťte na správce systému.
Chyba: Zadaná cesta, název souboru nebo obojí jsou příliš dlouhé. Plně kvalifikovaný název souboru musí být menší než 260 znaků a název adresáře musí být menší než 248 znaků.
Zkraťte názvy složek a zkuste to znovu.