Управление папкой установки глобальных пакетов, кэшем и временными папкамиManaging the global packages, cache, and temp folders
После каждой установки, обновления или восстановления NuGet управляет пакетами и сведениями о них в нескольких папках за пределами структуры проекта:Whenever you install, update, or restore a package, NuGet manages packages and package information in several folders outside of your project structure:
nameName | Описание и расположение (в зависимости от пользователя)Description and Location (per user) |
---|---|
global‑packagesglobal‑packages | В папку global-packages NuGet устанавливает любой загруженный пакет.The global-packages folder is where NuGet installs any downloaded package. Каждый пакет полностью развертывается во вложенную папку, соответствующую идентификатору пакета и номеру версии.Each package is fully expanded into a subfolder that matches the package identifier and version number. Проекты в формате PackageReference всегда используют пакеты непосредственно из этой папки.Projects using the PackageReference format always use packages directly from this folder. При использовании packages.config пакеты устанавливаются в папку global-packages, а затем копируются в папку packages проекта.When using the packages.config, packages are installed to the global-packages folder, then copied into the project's packages folder.
|
http‑cachehttp‑cache | Диспетчер пакетов Visual Studio (NuGet 3.x +) и dotnet инструмент хранят копии загруженных пакетов в этом кеше (сохраненные как .dat файла), организованные в подпапки для каждого источника пакета.The Visual Studio Package Manager (NuGet 3.x+) and the dotnet tool store copies of downloaded packages in this cache (saved as .dat files), organized into subfolders for each package source. Пакеты не развернуты. Срок действия кэша составляет 30 минут.Packages are not expanded, and the cache has an expiration time of 30 minutes.
|
temptemp | Папка, в которой NuGet хранит временные файлы, используемые в различных операциях.A folder where NuGet stores temporary files during its various operations.%temp%\NuGetScratch Windows: %temp%\NuGetScratch /tmp/NuGetScratch Mac/Linux: /tmp/NuGetScratch |
plugins-cache 4.8+plugins-cache 4.8+ | Папка, в которой NuGet хранит результаты запросов на утверждение операций.A folder where NuGet stores the results from the operation claims request.
|
Примечание
NuGet 3.5 и более ранних версий использует папку packages-cache вместо http-cache, которая находится по следующему пути: %localappdata%\NuGet\Cache
.NuGet 3.5 and earlier uses packages-cache instead of the http-cache, which is located in %localappdata%\NuGet\Cache
.
Использование кэша и папок global-packages позволяет NuGet избежать скачивания пакетов, хранящихся на компьютере, что в свою очередь улучшает производительность операций установки, обновления и восстановления.By using the cache and global-packages folders, NuGet generally avoids downloading packages that already exist on the computer, improving the performance of install, update, and restore operations. При использовании формата PackageReference папка global-packages также позволяет избежать хранения скачанных пакетов в папках проектов, откуда их можно случайно добавить в систему управления версиями. Кроме того, это снижает общее влияние NuGet на ресурсы хранилища компьютера.When using PackageReference, the global-packages folder also avoids keeping downloaded packages inside project folders, where they might be inadvertently added to source control, and reduces NuGet's overall impact on computer storage.
При запросе на извлечение пакета NuGet в первую очередь проверяет папку global-packages.When asked to retrieve a package, NuGet first looks in the global-packages folder. Если не удается найти точную версию пакета, NuGet проверяет все источники пакетов, отличные от HTTP.If the exact version of package is not there, then NuGet checks all non-HTTP package sources. Если пакет отсутствует и там, NuGet ищет его в папке http-cache, если вы не указали с помощью команды dotnet.exe
параметр --no-cache
или с помощью команды nuget.exe
параметр -NoCache
.If the package is still not found, NuGet looks for the package in the http-cache unless you specify --no-cache
with dotnet.exe
commands or -NoCache
with nuget.exe
commands. Если пакет отсутствует в кэше или кэш не используется, NuGet извлекает пакет по протоколу HTTP.If the package is not in the cache, or the cache isn't used, NuGet then retrieves the package over HTTP .
Дополнительные сведения см. в разделе Процесс установки пакета.For more information, see What happens when a package is installed?.
Просмотр расположения папокViewing folder locations
Расположение можно просмотреть с помощью команды nuget locals:You can view locations using the nuget locals command:
# Display locals for all folders: global-packages, http cache, temp and plugins cache
nuget locals all -list
Типичные выходные данные выглядят следующим образом (Windows; user1 —это имя текущего пользователя):Typical output (Windows; "user1" is the current username):
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
используется в NuGet 2.x. Ее содержимое можно посмотреть с помощью NuGet 3.5 и более ранних версий.)(package-cache
is used in NuGet 2.x and appears with NuGet 3.5 and earlier.)
Расположения папок можно также просмотреть с помощью команды dotnet nuget locals:You can also view folder locations using the dotnet nuget locals command:
dotnet nuget locals all --list
Типичные выходные данные выглядят следующим образом (Mac/Linux; user1 —это имя текущего пользователя):Typical output (Mac/Linux; "user1" is the current username):
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
Чтобы отобразить расположение отдельной папки, используйте http-cache
, global-packages
, temp
или plugins-cache
, а не all
.To display the location of a single folder, use http-cache
, global-packages
, temp
, or plugins-cache
instead of all
.
Очистка локальных папокClearing local folders
Если при установке пакета возникают неполадки или вы по иной причине хотите обеспечить установку пакетов из удаленной коллекции, используйте параметр locals --clear
(dotnet.exe) или locals -clear
(nuget.exe), с помощью которых можно указать конкретную папку, которую нужно очистить, или параметр all
, чтобы очистить все папки:If you encounter package installation problems or otherwise want to ensure that you're installing packages from a remote gallery, use the locals --clear
option (dotnet.exe) or locals -clear
(nuget.exe), specifying the folder to clear, or all
to clear all folders:
# 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
Все пакеты, которые в настоящее время открыты в проектах Visual Studio, нельзя удалить из папки global-packages.Any packages used by projects that are currently open in Visual Studio are not cleared from the global-packages folder.
Начиная с версии Visual Studio 2017, в меню Инструменты > Диспетчер пакетов NuGet > Параметры диспетчера пакетов выберите Очистить весь кэш NuGet.Starting in Visual Studio 2017, use the Tools > NuGet Package Manager > Package Manager Settings menu command, then select Clear All NuGet Cache(s). Сейчас управлять кэшем через консоль диспетчера пакетов нельзя.Managing the cache isn't presently available through the Package Manager Console. В Visual Studio 2015 используйте вместо этого команды CLI.In Visual Studio 2015, use the CLI commands instead.
Ошибки и способы их устраненияTroubleshooting errors
При использовании nuget locals
или dotnet nuget locals
могут возникать следующие ошибки:The following errors can occur when using nuget locals
or dotnet nuget locals
:
Ошибка: процесс не может получить доступ к файлу , поскольку этот файл используется другим процессом или При удалении локальных ресурсов произошел сбой: не удалось удалить один файл (или несколько)Error: The process cannot access the file because it is being used by another process or Clearing local resources failed: Unable to delete one or more files
Один или несколько файлов в папке используются другим процессом, например открыт проект Visual Studio, который ссылается на пакеты в папке global-packages.One or more files in the folder are in use by another process; for example, a Visual Studio project is open that refers to packages in the global-packages folder. Закройте эти процессы и повторите попытку.Close those processes and try again.
Ошибка: доступ к пути "" запрещен или Каталог не пустError: Access to the path is denied or The directory is not empty
Отсутствуют разрешения на удаление файлов в кэше.You don't have permission to delete files in the cache. Измените разрешения папки, если это возможно, и повторите попытку.Change the folder permissions, if possible, and try again. В противном случае обратитесь к системному администратору.Otherwise, contact your system administrator.
Ошибка: Указанный путь, имя файла или оба значения имеют слишком большую длину. Полное имя файла должно содержать меньше 260 символов, а имя каталога — меньше 248 символовError: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
Сократите имена папок и повторите попытку.Shorten the folder names and try again.