Изменение папок пакета NuGet, используемых Visual Studio 2017

Папка решений packages больше не существует в любом проекте .NET Core с csproj или project.json.

NuGet CLI получает список использованных папок кэша:

nuget locals all -list

Ответ:

http-cache: C:\Users\<foo>\AppData\Local\NuGet\v3-cache
global-packages:  C:\Users\<foo>\.nuget\packages\
temp: C:\Users\<foo>\AppData\Local\Temp\NuGetScratch

Как изменить или переопределить эти местоположения?

Ответ 1

Местоположение кэша

Пакеты решений для локальных пакетов больше не существуют для .NET Core и Visual Studio 2017.

NuGet теперь полностью интегрирован в MSBuild:

Пакеты решений - локальные пакеты больше не используются - теперь пакеты разрешено против кеша пользователей в% userdata%.nuget, а не в пакет конкретных решений. Это делает PackageReference быстрее и потребляйте меньше места на диске, используя общую папку пакетов на вашей рабочей станции.

NuGet 4.0+ использует как минимум два глобальных расположения пакетов:

  • Пользовательский: %userprofile%\.nuget\packages\
  • Общесистемный: %ProgramFiles(x86)%\Microsoft SDKs\NuGetPackages\"

Вы можете перечислить все пользовательские папки, используя следующую консольную команду:

nuget locals all -list

Обратите внимание на то, что папка в машинном каталоге отсутствует в списке. Однако он определен в настройках Visual Studio:

Options -> NuGet Package Manager -> Package Sources

Файлы конфигурации

NuGet.config файлы находятся здесь:

  • Пользовательский: %APPDATA%\NuGet\
  • Общесистемный: %ProgramFiles(x86)%\NuGet\Config\

Можно изменить и переопределить настройки NuGet на разных уровнях:

  • Проект
  • решение
  • Пользователь
  • машина

И даже больше! Подробнее о NuGet.config иерархическом порядке приоритетов здесь: Как применяются настройки.

Например, параметр globalPackagesFolder изменяет местоположение кэша пакета. Посмотрите на пример NuGet.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <clear />
    <add key="globalPackagesFolder" value="c:\packages" />
  </config>
</configuration>

Ответ 2

Из документов MS:

глобальные-пакеты

  • Windows:% userprofile%.nuget\packages
  • Mac/Linux: ~/.nuget/пакеты

Переопределите, используя переменную среды NUGET_PACKAGES, параметры конфигурации globalPackagesFolder или repositoryPath (при использовании PackageReference и packages.config соответственно) или свойство RestorePackagesPath MSBuild (только MSBuild). Переменная среды имеет приоритет над параметром конфигурации.