Zarządzanie globalnymi pakietami, pamięcią podręczną i folderami tymczasowymi

Za każdym razem, gdy instalujesz, aktualizując lub przywracasz pakiet, NuGet zarządza pakietami i informacjami o pakiecie w kilku folderach poza strukturą projektu:

Nazwisko Opis i lokalizacja (na użytkownika)
pakiety globalne Folder global-packages to miejsce, w którym pakiet NuGet instaluje dowolny pobrany pakiet. Każdy pakiet jest w pełni rozwinięty w podfolder zgodny z identyfikatorem pakietu i numerem wersji. Projekty korzystające z formatu PackageReference zawsze używają pakietów bezpośrednio z tego folderu. W przypadku korzystania z pliku packages.config pakiety są instalowane w folderze global-packages , a następnie kopiowane do folderu projektu packages .
  • Windows: %userprofile%\.nuget\packages
  • Mac/Linux: ~/.nuget/packages
  • Zastąp wartość przy użyciu zmiennej środowiskowej NUGET_PACKAGES, globalPackagesFolder ustawień konfiguracji lubrepositoryPath (odpowiednio w przypadku używania funkcji PackageReference i packages.config, lub RestorePackagesPath właściwości MSBuild ( tylko msBuild). Zmienna środowiskowa ma pierwszeństwo przed ustawieniem konfiguracji.
http-cache Program Visual Studio Menedżer pakietów (NuGet 3.x+) i dotnet narzędzie przechowuje kopie pobranych pakietów w tej pamięci podręcznej (zapisane jako .dat pliki) uporządkowane w podfoldery dla każdego źródła pakietów. Pakiety nie są rozszerzane, a pamięć podręczna ma czas wygaśnięcia 30 minut.
  • Windows: %localappdata%\NuGet\v3-cache
  • Mac/Linux: ~/.local/share/NuGet/v3-cache
  • Zastąpij zmienną środowiskową NUGET_HTTP_CACHE_PATH.
tymczasowe Folder, w którym NuGet przechowuje pliki tymczasowe podczas różnych operacji.
  • Windows: %temp%\NuGetScratch
  • Mac: /tmp/NuGetScratch
  • Linux: /tmp/NuGetScratch<username>
  • Zastąpij zmienną środowiskową NUGET_SCRATCH.
  • plugins-cache 4.8+ Folder, w którym NuGet przechowuje wyniki żądania oświadczeń operacji.
    • Windows: %localappdata%\NuGet\plugins-cache
    • Mac/Linux: ~/.local/share/NuGet/plugins-cache
    • Zastąpij zmienną środowiskową NUGET_PLUGINS_CACHE_PATH.

    Uwaga

    Program NuGet 3.5 i starsze wersje używają pamięci podręcznej packages-cache zamiast pamięci podręcznej http, która znajduje się w lokalizacji %localappdata%\NuGet\Cache.

    Korzystając z folderów pamięci podręcznej i pakietów globalnych, pakiet NuGet zwykle unika pobierania pakietów, które już istnieją na komputerze, zwiększając wydajność operacji instalacji, aktualizacji i przywracania. W przypadku korzystania z funkcji PackageReference folder global-packages pozwala również uniknąć utrzymywania pobranych pakietów wewnątrz folderów projektu, gdzie mogą być przypadkowo dodawane do kontroli źródła i zmniejsza ogólny wpływ nuGet na magazyn komputerów.

    Po wyświetleniu monitu o pobranie pakietu pakiet NuGet najpierw zostanie wyświetlony w folderze global-packages . Jeśli dokładna wersja pakietu nie istnieje, narzędzie NuGet sprawdza wszystkie źródła pakietów innych niż HTTP. Jeśli pakiet nadal nie zostanie znaleziony, pakiet NuGet szuka pakietu w pamięci podręcznej http-cache, chyba że określono dotnet.exe--no-http-cache polecenia lub -NoHttpCache polecenianuget.exe. Jeśli pakiet nie znajduje się w pamięci podręcznej lub pamięć podręczna nie jest używana, narzędzie NuGet pobiera pakiet za pośrednictwem protokołu HTTP .

    Aby uzyskać więcej informacji, zobacz Co się stanie po zainstalowaniu pakietu?

    Wyświetlanie lokalizacji folderów

    Lokalizacje można wyświetlić za pomocą polecenia nuget locals:

    # Display locals for all folders: global-packages, http cache, temp and plugins cache
    nuget locals all -list
    

    Typowe dane wyjściowe (Windows; "user1" to bieżąca nazwa użytkownika):

    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 jest używany w nuGet 2.x i jest wyświetlany z NuGet 3.5 i jego wcześniejszymi wersjami).

    Lokalizacje folderów można również wyświetlić za pomocą polecenia dotnet nuget locals:

    dotnet nuget locals all --list
    

    Typowe dane wyjściowe (Mac; "user1" to bieżąca nazwa użytkownika):

    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
    

    Typowe dane wyjściowe (Linux; "user1" to bieżąca nazwa użytkownika):

    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
    

    Aby wyświetlić lokalizację pojedynczego folderu, użyj polecenia http-cache, global-packages, templub plugins-cache zamiast all.

    Czyszczenie folderów lokalnych

    Jeśli wystąpią problemy z instalacją pakietu lub w inny sposób chcesz upewnić się, że instalujesz pakiety z galerii zdalnej, użyj locals --clear opcji (dotnet.exe) lub locals -clear (nuget.exe), określając folder do wyczyszczenia lub all wyczyść wszystkie foldery:

    # 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
    

    Wszystkie pakiety używane przez projekty, które są obecnie otwarte w programie Visual Studio, nie są czyszczone z folderu global-packages .

    Począwszy od programu Visual Studio 2017, użyj > narzędzia NuGet Menedżer pakietów > Menedżer pakietów Ustawienia menu, a następnie wybierz pozycję Wyczyść wszystkie pamięci podręczne NuGet. Zarządzanie pamięcią podręczną nie jest obecnie dostępne za pośrednictwem konsoli Menedżer pakietów. W programie Visual Studio 2015 użyj poleceń interfejsu wiersza polecenia.

    NuGet option command for clearing caches

    Rozwiązywanie problemów

    Podczas korzystania z programu nuget locals lub dotnet nuget localsmogą wystąpić następujące błędy:

    • Błąd: Proces nie może uzyskać dostępu do pakietu> plików<, ponieważ jest on używany przez inny proces lub czyszczenie zasobów lokalnych nie powiodło się: Nie można usunąć jednego lub większej liczby plików

      Co najmniej jeden plik w folderze jest używany przez inny proces; Na przykład projekt programu Visual Studio jest otwarty, który odwołuje się do pakietów w folderze global-packages . Zamknij te procesy i spróbuj ponownie.

    • Błąd: Odmowa dostępu do ścieżki lub <>katalog nie jest pusty

      Nie masz uprawnień do usuwania plików w pamięci podręcznej. Zmień uprawnienia folderu, jeśli to możliwe, i spróbuj ponownie. W przeciwnym razie skontaktuj się z administratorem systemu.

    • Błąd: określona ścieżka, nazwa pliku lub oba są za długie. W pełni kwalifikowana nazwa pliku musi być mniejsza niż 260 znaków, a nazwa katalogu musi być mniejsza niż 248 znaków.

      Skróć nazwy folderów i spróbuj ponownie.