¿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?


10
esta opción falta en mi versión VS 2015
spankmaster79

1
Sí, falta. Entonces estoy usando la respuesta aceptada.
g.pickardou

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


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

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

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

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.


¿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

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.


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

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.