Comment puis-je effacer le cache du package NuGet à l'aide de la ligne de commande?


405

Je peux effacer mon paquet d'ordinateur de développement NuGet cache en utilisant le menu Visual Studio ToolsOptions de → NuGet Package ManagerGénéral : Clear Package Cachebouton.

Je voudrais le faire sur la ligne de commande. Malheureusement, je ne trouve pas de commutateur de ligne de commande associé pour nuget.exe.

Ai-je oublié quelque chose?


10
cette option est manquante dans ma version VS 2015
spankmaster79

1
oui il manque. J'utilise donc la réponse acceptée.
g.pickardou

Réponses:


634

Tout d'abord, téléchargez l'outil de ligne de commande NuGet à partir d' ici .

Ensuite, ouvrez une invite de commande et accédez cdau répertoire dans lequel vous nuget.exeavez été téléchargé.

Vous pouvez répertorier les caches locaux avec cette commande:

nuget locals all -list

Vous pouvez effacer tous les caches avec cette commande:

nuget locals all -clear

Référence: https://docs.nuget.org/consume/command-line-reference


10
Fonctionne bien pour 3.3 mais uniquement pour l'utilisateur actuel - j'ai eu un problème avec un cache local corrompu sur notre serveur de build qui fonctionnait (malheureusement) sous le système local, donc le cache n'était pas répertorié - l'emplacement réel était `C: \ Windows \ SysWOW64 \ config \ systemprofile \ AppData \ Local \ NuGet \ Cache`
Zhaph - Ben Duguid

1
Vous devriez peut-être exécuter l'opération d'effacement sous le même utilisateur que l'opération de génération. Soit en configurant un utilisateur de build dédié, soit en utilisant une astuce pour exécuter clear sous Local System.
g.pickardou

2
Existe-t-il des possibilités de supprimer un NuGet particulier du cache? par exemple: je veux supprimer NuGet X du cache et je ne suis pas au courant de l'emplacement du cache NuGet, dans cette situation, comment supprimer "X" seul du cache
user3610920

19
J'ai dû courir nuget update -selfpour mettre à jour le nuget.exe que j'ai téléchargé à partir de ce lien, sinon j'ai eu l'erreurUnknown commmand: 'locals'
ajbeaven

1
assurez-vous de fermer votre VS car devenv.exeil se peut que certains dossiers de packages soient bloqués et qu'ils ne soient pas effacés.
Sharif

227

Dans Visual Studio 2017, accédez au menu OutilsGestionnaire de package NuGetParamètres du gestionnaire de package . Vous trouverez peut - être un bouton, Clear All NuGet Cache(s):

Entrez la description de l'image ici

Si vous utilisez .NET Core, vous pouvez vider le cache avec cette commande, qui devrait fonctionner à partir des outils .NET Core 1.0:

dotnet nuget locals all --clear

7
C'est donc de retour! :-). Je suis curieux de savoir s'il sera à nouveau supprimé dans VS 2019 :-)
g.pickardou

13
l'utilisation de la ligne de commande dotnet nuget locals all --clearest très utile, merci
Boggin

1
La commande dotnet nuget locals all --cleara parfaitement fonctionné. Je n'ai pas eu à installer d'outil cmd nuget supplémentaire. Mon SSD peut à nouveau respirer!
Jiří Kuba

87

L'utilitaire nuget.exe n'a pas cette fonctionnalité, mais en voyant que le cache NuGet est simplement un dossier sur votre ordinateur, vous pouvez supprimer les fichiers manuellement. Ajoutez simplement ceci à votre fichier batch:

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

5
Au moment de demander, c'était la seule solution, la meilleure réponse aussi. Maintenant, je ne l'ai pas marqué et j'ai crédité la réponse de @ rmoore après l'avoir essayée.
g.pickardou

28

Pour moi, je devais aller ici:

%userprofile%\.nuget\packages

2
C'est le bon chemin où tous les pépites sont téléchargées et conservées
Alok Rajasukumaran

2
Et, j'avais des paquets de pépites de 2,04 Go: o
Alok Rajasukumaran

19
2,04 Go est à peu près le même que node_modules pour une application de nœud "hello world";)
annoncé

20

Cela ajoute à la réponse de rm8x .

Téléchargez et installez l'outil de ligne de commande NuGet.

Liste de tous nos locaux:

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

Nous pouvons maintenant les supprimer manuellement ou comme le suggère rm8x , utiliser nuget locals all -clear.


quel est l'intérêt de supprimer si nuget va générer tous ceux avec chaque build? pourquoi nuget crée-t-il autant de dossiers?
batmaci

2
@batmaci parce qu'au fil du temps les paquets sont mis à jour et vous vous retrouverez avec Batmaci 1.0, Batmaci 1.1, Batmaci 1.2où tout ce que vous avez besoin est le dernier
Simon_Weaver

Nous avons eu le problème occasionnel sur notre serveur de build de ne pas trouver les packages NuGet dans le cache. Nous l'avons résolu en effaçant toujours le cache au début de la génération.
Steve Wright

14

Notez qu'il dnxa un cache différent pour alimenter les résultats 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 vous pouvez effacer avec

dnu clear-http-cache

Maintenant, nous avons juste besoin de savoir quelle sera la commande sur le nouveau dotnet outil CLI.

... et le voici:

dotnet restore --no-cache

J'irais avec l'approche ci-dessus de Ruslan car j'ai des problèmes avec les paquets qui passent même
Alexz

La course à pied a dotnet restore --no-cachefonctionné pour moi, mais je devais le faire à partir d'une invite Powershell exécutée en tant qu'administrateur
shanabus

10

dotnet nuget locals all --clear

Si vous utilisez .NET Core.


Je suggérerais de le faire avant d'aller déjeuner.
Helzgate du

5

Si vous devez vider le cache NuGet de votre serveur / agent de génération, vous pouvez trouver le cache des packages NuGet ici:

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

Exemple:

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

1
J'ai pris la liberté de marquer le chemin pour le rendre plus lisible, et de remplacer [dir windows] par %windir%, qui vous mettra automatiquement dans le bon répertoire une fois entré par exemple dans l'explorateur windows.
Kjartan

3

Vous pouvez également utiliser PowerShell (comme moi).

Par exemple:

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

Ou mode «silencieux» (sans messages d'erreur):

rm $env:LOCALAPPDATA\NuGet\Cache\*.nupkg 2> $null
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.