Как очистить кеш пакета NuGet с помощью командной строки?

Я могу очистить кэш пакета NuGet моего компьютера разработчика с помощью VS Tools/Options/NuGet Package Manager/General: кнопка [Clear Package Cache].

Я хотел бы сделать это в командной строке. К сожалению, я не могу найти соответствующий ключ командной строки для nuget.exe.

Я что-то пропустил?

14 ответов

Решение

Сначала загрузите инструмент командной строки NuGet отсюда.

Затем откройте командную строку и cd в каталог, в который nuget.exe был загружен.

Вы можете перечислить локальные кэши с помощью этой команды:

nuget locals all -list

Вы можете очистить все кеши с помощью этой команды:

nuget locals all -clear

Ссылка: https://docs.nuget.org/consume/command-line-reference

В Visual Studio 2017 перейдите в раздел ИНСТРУМЕНТЫ -> Диспетчер пакетов Nuget -> Настройки диспетчера пакетов. Вы можете найти кнопку "Очистить все кэши NuGet"

Если вы используете.NET Core, вы можете очистить кеш с помощью этой команды, которая должна работать с.NET Core tools 1.0:

dotnet nuget locals all --clear

dotnet nuget locals all --clear

Если вы используете.NET Core.

Утилита nuget.exe не имеет этой функции, но, видя, что кэш NuGet - это просто папка на вашем компьютере, вы можете удалить файлы вручную. Просто добавьте это в ваш пакетный файл.

del %LOCALAPPDATA%\NuGet\Cache\*.nupkg /q

Для меня я должен был пойти сюда:

%userprofile%\.nuget\packages

Это добавляет к ответу rmoore.

Загрузите и установите инструмент командной строки NuGet.

Перечислите всех наших местных жителей.

$ nuget locals all -list
http-cache: C:\Users\MyUser\AppData\Local\NuGet\v3-cache
packages-cache: C:\Users\MyUser\AppData\Local\NuGet\Cache
global-packages: C:\Users\MyUser\.nuget\packages\

Теперь мы можем удалить их вручную или, как предлагает rmoore, использовать nuget locals all -clear,

Очистка кеша

С ядром dotnet cli

dotnet nuget locals all --clear

С Visual Studio 2017

  1. Перейдите в меню ИнструментыДиспетчер пакетов NuGetПараметры диспетчера пакетов.
  2. Нажмите Clear All NuGet Cache(s):

С помощью nuget cli

Загрузите и установите инструмент командной строки NuGet.

       nuget locals all -clear

С командной строкой Windows

       del %LOCALAPPDATA%\NuGet\Cache\*.nupkg /q

(можно использовать в .bat файл)

С PowerShell

       rm $env:LOCALAPPDATA\NuGet\Cache\*.nupkg

Или "тихий" режим (без сообщений об ошибках):

       rm $env:LOCALAPPDATA\NuGet\Cache\*.nupkg 2> $null

Расположение кеша

Окна

       %userprofile%\.nuget\packages

Linux

       ~/.nuget/

Построить сервер

%windir%/ServiceProfiles/[account under build service runs]\AppData\Local\NuGet\Cache

Пример:

       C:\Windows\ServiceProfiles\NetworkService\AppData\Local\NuGet\Cache

Этот ответ представляет собой набор всех существующих ответов для вашего удобства.

Обратите внимание, что dnx имеет другой кеш для результатов http канала

Microsoft .NET Development Utility Clr-x86-1.0.0-rc1-16231
   CACHE https://www.nuget.org/api/v2/
   CACHE http://192.168.148.21/api/odata/

Что вы можете очистить с

dnu clear-http-cache

Теперь нам просто нужно выяснить, какая команда будет на новом dotnet инструмент Cli

...есть

dotnet restore --no-cache

Если вам нужно очистить кеш Nuget для вашего сервера / агента сборки, вы можете найти кеш для пакетов Nuget здесь:

%windir%/ServiceProfiles/[account under build service runs]\AppData\Local\NuGet\Cache

Пример: C:\Windows\ServiceProfiles\NetworkService\AppData\Local\NuGet\Cache

Вы можете использовать PowerShell для (так же, как я).

Например:

rm $env:LOCALAPPDATA\NuGet\Cache\*.nupkg

или "тихий" режим (без сообщений об ошибках):

rm $env:LOCALAPPDATA\NuGet\Cache\*.nupkg 2> $null

Я оказался здесь, потому что пытался выяснить, как удалить конкретный пакет nuget из кеша. В приведенных выше ответах говорится об удалении всех локальных пакетов с помощью nuget locals all -clear.

Если кто-то заинтересован в очистке определенного пакета, я делюсь своими выводами:

  • В настоящее время вы не можете очистить конкретный пакет с помощью nuget или dotnetcli. Чтобы исправить это, существует проблема с github: https://github.com/NuGet/Home/issues/5713
  • На данный момент вам нужно прибегнуть к командам файловой системы (как упоминалось в некоторых из приведенных выше ответов), чтобы удалить конкретный пакет. Для mac / linux это было rm -rf ~/.nuget/packages/<package-name>
  • На самом деле мне был нужен способ удалить кеш определенного пакета, который я собирался повторно опубликовать в локальном репозитории nuget (с использованием фиксированного номера версии, чтобы упростить локальную разработку). Я добился этого, добавив в .csproj файл библиотеки nuget-packaged:
          <Project>
      <Target Name="DeleteLocalCache" BeforeTargets="Pack">
        <RemoveDir Directories="$(NugetPackageRoot)/$(PackageId.ToLower())/1.0.0-local"/>
      </Target>
    </Project>

Очистить кэш 3.x+ (используйте любую команду)

dotnet nuget locals http-cache --clear
nuget locals http-cache -clear

Очистить кеш 2.x (только для NuGet CLI 3.5 и более ранних версий)

nuget locals packages-cache -clear

Очистить папку глобальных пакетов (используйте любую команду)

dotnet nuget locals global-packages --clear
nuget locals global-packages -clear

Очистить временный кеш (используйте любую команду)

dotnet nuget locals temp --clear
nuget locals temp -clear

Очистить кеш плагинов (используйте любую команду)

dotnet nuget locals plugins-cache --clear
nuget locals plugins-cache -clear

Очистить все кэши (используйте любую команду)

dotnet nuget locals all --clear
nuget locals all -clear

Больше подробностей

Для тех, кто установил nugetна RHEL7 (например, из репозитория EPEL), используя sudo yum install nuget, вот где находится локальный кеш:

      ~/.local/share/NuGet/Cache

Я видел свои nugets в этой папке (на сервере сборки): c:\Windows\System32\config\systemprofile.nuget\packages\

Другие вопросы по тегам