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.
  • Windows: %userprofile%\.nuget\packages
  • Mac/Linux: ~/.nuget/packages
  • Přepsání pomocí proměnné prostředí NUGET_PACKAGES, globalPackagesFolder nastavení konfigurace neborepositoryPath nastavení (při použití PackageReference a packages.config, v uvedeném pořadí) nebo RestorePackagesPath vlastnosti MSBuild (pouze MSBuild). Proměnná prostředí má přednost před nastavením konfigurace.
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.
  • Windows: %localappdata%\NuGet\v3-cache
  • Mac/Linux: ~/.local/share/NuGet/v3-cache
  • Přepsat pomocí proměnné prostředí NUGET_HTTP_CACHE_PATH.
temp Složka, ve které NuGet ukládá dočasné soubory během různých operací.
  • Windows: %temp%\NuGetScratch
  • Mac: /tmp/NuGetScratch
  • Linux: /tmp/NuGetScratch<username>
  • Přepsat pomocí proměnné prostředí NUGET_SCRATCH.
  • moduly plug-in-cache 4.8 nebo novější Složka, ve které NuGet ukládá výsledky z žádosti o deklarace identity operace.
    • Windows: %localappdata%\NuGet\plugins-cache
    • Mac/Linux: ~/.local/share/NuGet/plugins-cache
    • Přepsat pomocí proměnné prostředí NUGET_PLUGINS_CACHE_PATH.

    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 -NoHttpCachenuget.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, tempnebo 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.

    NuGet option command for clearing caches

    Chyby při řešení problémů

    K následujícím chybám může dojít při použití nebo nuget localsdotnet 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.