¿Cómo puedo borrar la caché del paquete NuGet usando la línea de comando?

405

Puedo borrar el caché de paquetes NuGet de mi computadora de desarrollo usando el menú Visual Studio HerramientasOpcionesNuGet Package ManagerGeneral : Clear Package Cachebotón.

Me gustaría hacer esto en la línea de comando. Desafortunadamente, no puedo encontrar un interruptor de línea de comando relacionado para nuget.exe.

¿Me he perdido algo?

g.pickardou
fuente
10
esta opción falta en mi versión VS 2015
spankmaster79
1
Sí, falta. Entonces estoy usando la respuesta aceptada.
g.pickardou
1
Documento de
Simon_Weaver

Respuestas:

634

Primero, descargue la herramienta de línea de comando NuGet desde aquí .

A continuación, abra un símbolo del sistema y cdal directorio en el que nuget.exese descargó.

Puede enumerar las cachés locales con este comando:

nuget locals all -list

Puede borrar todas las memorias caché con este comando:

nuget locals all -clear

Referencia: https://docs.nuget.org/consume/command-line-reference

rm8x
fuente
10
Funciona bien para 3.3 pero solo para el usuario actual: tuve un problema con un caché local corrupto en nuestro servidor de compilación que se ejecutaba (lamentablemente) en el sistema local, por lo que el caché no estaba en la lista; la ubicación real era `C: \ Windows \ SysWOW64 \ config \ systemprofile \ AppData \ Local \ NuGet \ Cache`
Zhaph - Ben Duguid
1
Tal vez debería ejecutar la operación clear bajo el mismo usuario que la operación de compilación. Ya sea con la configuración de un usuario de compilación dedicado o con un truco para ejecutar clear en el Sistema local.
g.pickardou
2
¿Hay alguna posibilidad de eliminar NuGet particular de la memoria caché? por ejemplo: quiero eliminar NuGet X del caché y no conozco la ubicación del caché NuGet, en esta situación, cómo eliminar "X" solo del caché
user3610920
19
Tuve que ejecutar nuget update -selfpara actualizar el nuget.exe que descargué de este enlace; de ​​lo contrario, recibí el errorUnknown commmand: 'locals'
ajbeaven
1
asegúrese de cerrar su VS ya que devenv.exepodría estar bloqueando algunas carpetas de paquetes y no se borrarán.
Sharif
227

En Visual Studio 2017, vaya al menú HerramientasAdministrador de paquetes NuGetConfiguración del Administrador de paquetes . Puede encontrar un botón Clear All NuGet Cache(s):

Ingrese la descripción de la imagen aquí

Si está utilizando .NET Core, puede borrar la memoria caché con este comando, que debería funcionar a partir de .NET Core tools 1.0:

dotnet nuget locals all --clear
Ricky
fuente
77
¡Así que ha vuelto! :-). Tengo curiosidad por saber si se eliminará nuevamente en VS 2019 :-)
g.pickardou
13
el uso de la línea de comandos dotnet nuget locals all --cleares muy útil, gracias
Boggin
1
El comando dotnet nuget locals all --clearfuncionó perfectamente. No tuve que instalar ninguna herramienta adicional de cmget nuget. ¡Mi SSD puede respirar de nuevo!
Jiří Kuba
87

La utilidad nuget.exe no tiene esta característica, pero al ver que el caché NuGet es simplemente una carpeta en su computadora, puede eliminar los archivos manualmente. Simplemente agregue esto a su archivo por lotes:

del %LOCALAPPDATA%\NuGet\Cache\*.nupkg /q
Kiliman
fuente
55
A la hora de preguntar, esta era la única solución, y la mejor respuesta. Ahora lo he desmarcado y he acreditado la respuesta de @ rmoore después de probarlo.
g.pickardou
27

Para mí tuve que ir aquí:

%userprofile%\.nuget\packages
Bowofola
fuente
2
Este es el camino correcto donde se descargan y guardan todos los nugets
Alok Rajasukumaran
2
Y tenía paquetes nuget de 2.04 Gb: o
Alok Rajasukumaran
19
2.04GB es casi lo mismo que node_modules para una aplicación de nodo "hello world";)
tommed
20

Esto se suma a la respuesta de rm8x .

Descargue e instale la herramienta de línea de comandos NuGet.

Lista de todos nuestros lugareños:

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

Ahora podemos eliminarlos manualmente o, como sugiere rm8x , usar nuget locals all -clear.

Shaun Luttin
fuente
¿Cuál es el punto de eliminar si Nuget generará todos aquellos con cada compilación? ¿Por qué Nuget está creando tantas carpetas?
batmaci
2
@batmaci porque con el tiempo se actualizan los paquetes y que va a terminar con Batmaci 1.0, Batmaci 1.1, Batmaci 1.2donde todo lo que necesita es el más reciente
Simon_Weaver
Tuvimos el problema ocasional en nuestro servidor de compilación al no encontrar paquetes NuGet en el caché. Lo solucionamos limpiando siempre el caché al comienzo de la compilación.
Steve Wright
14

Tenga en cuenta que dnxtiene una memoria caché diferente para alimentar 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/

Que puedes borrar con

dnu clear-http-cache

Ahora solo tenemos que averiguar cuál será el comando en la nueva dotnetherramienta CLI.

...Y aquí está:

dotnet restore --no-cache
KCD
fuente
Seguiría el enfoque anterior de Ruslan, ya que tengo algunos problemas con los paquetes que incluso pasan --no-cache
Alexz
Ejecutar dotnet restore --no-cachefuncionó para mí, pero tuve que hacerlo desde un mensaje de Powershell que se ejecutaba como administrador
shanabus
10

dotnet nuget locals all --clear

Si está utilizando .NET Core.

Jim Aho
fuente
Sugeriría hacer esto antes de ir a almorzar.
Helzgate el
5

Si necesita borrar el caché NuGet para su servidor / agente de compilación, puede encontrar el caché para los paquetes NuGet aquí:

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

Ejemplo:

C:\Windows\ServiceProfiles\NetworkService\AppData\Local\NuGet\Cache
khablander
fuente
1
Me tomé la libertad de marcar el camino para hacerlo más legible, y reemplazar [directorio de Windows] con %windir%, lo que lo colocará automáticamente en el directorio correcto cuando ingrese, por ejemplo, en el explorador de Windows.
Kjartan
3

También puedes usar PowerShell (igual que yo).

Por ejemplo:

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

O modo 'silencioso' (sin mensajes de error):

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