Como posso limpar o cache do pacote NuGet usando a linha de comando?

405

Posso limpar o cache do pacote NuGet do meu computador de desenvolvimento usando o menu Visual Studio FerramentasOpçõesGerenciador de Pacotes NuGetGeral : Clear Package Cachebotão.

Eu gostaria de fazer isso na linha de comando. Infelizmente, não consigo encontrar uma opção de linha de comando relacionada para nuget.exe.

Perdi alguma coisa?

g.pickardou
fonte
10
esta opção está faltando na minha versão 2015 VS
spankmaster79 9/09/15
11
sim está faltando. Então, eu estou usando a resposta aceita.
g.pickardou
11
Doc da Microsoft: docs.microsoft.com/en-us/nuget/consume-packages/…
Simon_Weaver

Respostas:

634

Primeiro, baixe a ferramenta de linha de comando NuGet aqui .

Em seguida, abra um prompt de comando e cdo diretório para o qual nuget.exefoi baixado.

Você pode listar os caches locais com este comando:

nuget locals all -list

Você pode limpar todos os caches com este comando:

nuget locals all -clear

Referência: https://docs.nuget.org/consume/command-line-reference

rm8x
fonte
10
Funciona bem para o 3.3, mas apenas para o usuário atual - eu tive um problema com um cache local corrompido em nosso servidor de compilação que estava (infelizmente) em execução no sistema local, portanto o cache não estava listado - o local real era `C: \ Windows \ SysWOW64 \ config \ systemprofile \ AppData \ Local \ NuGet \ Cache`
Zhaph - Ben Duguid
11
Talvez você deva executar a operação limpa com o mesmo usuário que a operação de construção. Seja na configuração de um usuário de compilação dedicado ou usando um truque para executar a limpeza em Sistema Local.
precisa saber é o seguinte
2
Existe a possibilidade de remover o NuGet específico do cache? por ex: Eu quero remover NuGet X do cache e não tenho conhecimento de NuGet local do cache, nesta situação como remover "X" por si só a partir do cache
user3610920
19
Eu tive que correr nuget update -selfpara atualizar o nuget.exe eu baixei a partir deste link, caso contrário eu tenho o erroUnknown commmand: 'locals'
ajbeaven
11
feche seu VS, pois devenv.exepode estar bloqueando algumas pastas de pacotes e elas não serão limpas.
Sharif
227

No Visual Studio 2017, vá para o menu FerramentasGerenciador de Pacotes NuGetConfigurações do Gerenciador de Pacotes . Você pode descobrir um botão Clear All NuGet Cache(s):

Digite a descrição da imagem aqui

Se você estiver usando o .NET Core, poderá limpar o cache com este comando, que deve funcionar como nas ferramentas do .NET Core 1.0:

dotnet nuget locals all --clear
Ricky
fonte
7
Então está de volta! :-). Estou curioso para saber se ele será removido novamente em VS 2019 :-)
g.pickardou
13
uso de linha de comando dotnet nuget locals all --clearé muito útil, graças
Boggin
11
Comando dotnet nuget locals all --clearfuncionou perfeitamente. Não tive que instalar nenhuma ferramenta extra de nuget cmd. Meu SSD pode respirar novamente!
Jiří Kuba
87

O utilitário nuget.exe não possui esse recurso, mas, como o cache do NuGet é simplesmente uma pasta no seu computador, você pode excluir os arquivos manualmente. Basta adicionar isso ao seu arquivo em lotes:

del %LOCALAPPDATA%\NuGet\Cache\*.nupkg /q
Kiliman
fonte
5
Na hora de perguntar, essa era a única solução, assim como a melhor resposta. Agora, desmarquei e creditei a resposta de @ rmoore depois de testá-la.
g.pickardou
27

Para mim eu tive que entrar aqui:

%userprofile%\.nuget\packages
Bowofola
fonte
2
Este é o caminho certo onde todos os nugets são baixados e mantidos
Alok Rajasukumaran
2
E eu tinha pacotes de nuget de 2,04 Gb: o
Alok Rajasukumaran 6/17
19
2.04GB é aproximadamente o mesmo que node_modules para um aplicativo nó "Olá mundo";)
tommed
20

Isso contribui para a resposta do rm8x .

Baixe e instale a ferramenta de linha de comando do NuGet.

Listar todos os nossos locais:

$ 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\

Agora podemos excluí-los manualmente ou, como sugere o rm8x , use nuget locals all -clear.

Shaun Luttin
fonte
qual é o ponto de excluir se o nuget irá gerar todos aqueles com todas as compilações? por que o nuget está criando tantas pastas?
batmaci
2
@batmaci porque ao longo do tempo pacotes são atualizados e você vai acabar com Batmaci 1.0, Batmaci 1.1, Batmaci 1.2onde tudo que você precisa é o mais recente
Simon_Weaver
Tivemos um problema ocasional em nosso servidor de compilação ao não encontrar pacotes NuGet no cache. Resolvíamos isso sempre limpando o cache no início da compilação.
Steve Wright
14

Observe que dnxpossui um cache diferente para alimentar os resultados 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/

Com o qual você pode limpar

dnu clear-http-cache

Agora só precisamos descobrir qual será o comando na nova dotnetferramenta CLI.

... e aqui está:

dotnet restore --no-cache
KCD
fonte
Eu iria com a abordagem acima de Ruslan como eu tem alguns problemas com pacotes mesmo passando --no-cache
Alexz
Correndo dotnet restore --no-cachefuncionou para mim, mas eu tinha que fazê-lo a partir de um prompt de PowerShell em execução como administrador
shanabus
10

dotnet nuget locals all --clear

Se você estiver usando o .NET Core.

Jim Aho
fonte
Eu sugeriria fazer isso antes de você ir almoçar.
Helzgate
5

Se você precisar limpar o cache do NuGet para o servidor / agente de construção, poderá encontrar o cache dos pacotes do NuGet aqui:

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

Exemplo:

C:\Windows\ServiceProfiles\NetworkService\AppData\Local\NuGet\Cache
khablander
fonte
11
Tomei a liberdade de marcar o caminho para torná-lo mais legível e substituir [windows dir] por %windir%, o que o colocará automaticamente no diretório certo quando inserido, por exemplo, no Windows Explorer.
Kjartan
3

Você também pode usar o PowerShell (o mesmo que eu).

Por exemplo:

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

Ou modo "silencioso" (sem mensagens de erro):

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