Windows path cache что это

Package Cache: что это за папка и можно ли ее удалить?

Если не все, то очень многие пользователи неоднократно замечали, что после инсталляции программного пакета MS Visual Studio на системном диске появляется директория Package Cache. Что это за папка? Для чего она нужна? Можно ли от нее избавиться, чтобы очистить свободное место? Обо всем этом мы расскажем в статье.

Многие пользователи относятся к вопросу ее удаления достаточно скептически, что может привести к непредсказуемым последствиям в плане работоспособности основного приложения.

Package Cache: что это за папка?

Начнем с самого простого. Посмотрим на сам каталог Package Cache. Что это за папка, нетрудно понять, если обратиться к основной программе Visual Studio.

Если кто не знает, данное приложение обязательно к установке при использовании на компьютерах мощных графических пакетов или ресурсоемких игр (без этого они попросту не будут работать). Но почему же тогда в Windows папка Package Cache появляется сразу же после инсталляции основной программы? Ответ прост: приложение автоматически резервирует место в системном разделе под свои нужды, которые сводятся к созданию и хранению резервных копий рабочей программы и для своевременной инсталляции пакетов обновлений. Изменить местоположение создаваемого каталога в процесс установки невозможно, поскольку все это происходит в фоновом режиме.

Для ранних версий программы Visual Studio размер папки не должен был превышать 50 Мб. В более поздних модификациях свободное место резервируется на уровне 2,5 Гб при условии того, что основной установочный дистрибутив приложения, например, выпуска 2015 года имеет размер 6,15 Гб.

Что за папка Package Cache Windows 7? Грубо говоря, она в своем основном предназначении служит для быстрого автоматического восстановления работы Visual Studio из бэкап-копии по типу того, как это производится для всей системы в целом при внезапных сбоях. Понятно, что держать дистрибутив, занимающий свободного дискового пространства в три раза больше, нежели каталог кэшированных данных, совершенно нецелесообразно, ведь восстановить работоспособность программы можно и из папки с копиями.

Можно ли удалить папку Package Cache из системного раздела?

Теперь несколько слов об удалении. Что это за папка (Package Cache), немного разобрались. А вот для решения дальнейшей проблемы необходимо отталкиваться от рекомендаций разработчиков Visual Studio из корпорации Microsoft. Они не рекомендуют удалять этот каталог ни в коем случае.

Если же пользователь намеренно или случайно удалил эту директорию, при старте загрузки апдейтов программы он получит сообщение о том, что невозможно определить источник обновлений. То же самое уведомление появится и в ситуации, когда произошел сбой. Это и понятно: раз резервная копия отсутствует, приложение не может быть восстановлено.

Перенос папки в другой логический раздел

Но не все так плохо. По крайней мере, считается (и это подтверждается всеми специалистами), что, если удалить каталог Package Cache нельзя, его можно элементарно переместить на другой диск или в логический раздел, на котором больше свободного места. Для этого сначала запускается командная строка (обязательно от имени администратора) либо через консоль «Выполнить» (cmd), либо через стартовое меню, либо посредством открытия через ПКМ исполняемого объекта cmd.exe в локации System32.

Читайте также:  Когда windows откажется от реестра

Теперь дело за малым. Перед вводом команд перемещения в логическом разделе (например, на диске «D») нужно создать директорию C_DRIVE, в ней – папку ProgramData, а уже в этой папке – каталог Package Cache. После этого следует скопировать содержимое оригинального каталога из локации ProgramData\Package Cache на диске «C» в новое место. По завершении копирования начальную директорию в системном разделе удаляем.

Обратите внимание: по умолчанию папка ProgramData на системном диске является скрытой, поэтому в «Проводнике» необходимо включить отображение соответствующих файлов и папок через меню вида.

После этого, чтобы программа определяла местонахождение кэшированных данных, в командной консоли сначала прописывается строка C:\>rmdir /s /q «C:\ProgramData\Package Cache», а затем еще одна — C:\>mklink /D «C:\ProgramData\Package Cache» «D:\C_DRIVE\ProgramData\Package Cache». Об успешном завершении операции будет свидетельствовать появление сообщения о присвоении новому каталогу символьной ссылки. Команды вводятся с кавычками и пробелами, как показано выше.

Вместо итога

Вот и все, что касается каталога Packager Cache. Что это за папка, и какие действия с ней можно производить, чтобы не нарушить функциональность программы Visual Studio, думается, уже понятно. В любом случае просто так (без использования копирования содержимого оригинальной директории и ввода дополнительных команд) избавляться от этого объекта не рекомендуется. В противном случае не только апдейты не установятся, но и саму программу придется полностью переустанавливать.

Управление папкой установки глобальных пакетов, кэшем и временными папками 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:

name Name Описание и расположение (в зависимости от пользователя) Description and Location (per user)
global‑packages global‑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.
  • Windows: %userprofile%\.nuget\packages Windows: %userprofile%\.nuget\packages
  • Mac/Linux:

/.nuget/packages

  • Переопределяет с помощью переменной среды NUGET_PACKAGES параметры конфигурации globalPackagesFolder или repositoryPath (при использовании PackageReference и packages.config соответственно) или свойство MSBuild RestorePackagesPath (только MSBuild). Override using the NUGET_PACKAGES environment variable, the globalPackagesFolder or repositoryPath configuration settings (when using PackageReference and packages.config , respectively), or the RestorePackagesPath MSBuild property (MSBuild only). Переменная среды имеет приоритет над параметром конфигурации. The environment variable takes precedence over the configuration setting.
  • http‑cache http‑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.

    • Windows: %localappdata%\NuGet\v3-cache Windows: %localappdata%\NuGet\v3-cache
    • Mac/Linux:

      /.local/share/NuGet/v3-cache

    • Переопределяет с помощью переменной среды NUGET_HTTP_CACHE_PATH. Override using the NUGET_HTTP_CACHE_PATH environment variable.
    temp temp Папка, в которой NuGet хранит временные файлы, используемые в различных операциях. A folder where NuGet stores temporary files during its various operations.
  • Windows: %temp%\NuGetScratch Windows: %temp%\NuGetScratch
  • Mac/Linux: /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.

    • Windows: %localappdata%\NuGet\plugins-cache Windows: %localappdata%\NuGet\plugins-cache
    • Mac/Linux:

      /.local/share/NuGet/plugins-cache

    • Переопределите с помощью переменной среды NUGET_PLUGINS_CACHE_PATH. Override using the NUGET_PLUGINS_CACHE_PATH environment variable.

    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:

    Типичные выходные данные выглядят следующим образом (Windows; user1 —это имя текущего пользователя): Typical output (Windows; «user1» is the current username):

    (Папка 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:

    Типичные выходные данные выглядят следующим образом (Mac/Linux; user1 —это имя текущего пользователя): Typical output (Mac/Linux; «user1» is the current username):

    Чтобы отобразить расположение отдельной папки, используйте 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:

    Все пакеты, которые в настоящее время открыты в проектах 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.

    Читайте также:  Служба удаленный реестр windows 10 что это
    Оцените статью