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 .
|
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.
|
tymczasowe | Folder, w którym NuGet przechowuje pliki tymczasowe podczas różnych operacji.%temp%\NuGetScratch /tmp/NuGetScratch /tmp/NuGetScratch<username> |
plugins-cache 4.8+ | Folder, w którym NuGet przechowuje wyniki żądania oświadczeń operacji.
|
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
, temp
lub 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 polecenia menu Narzędzia > NuGet Menedżer pakietów > Menedżer pakietów Ustawienia, 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.
Rozwiązywanie problemów
Podczas korzystania z programu nuget locals
lub dotnet nuget locals
mogą 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.