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?

g.pickardou
la source
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
1
Doc de Microsoft: docs.microsoft.com/en-us/nuget/consume-packages/…
Simon_Weaver

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

rm8x
la source
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
Ricky
la source
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
Kiliman
la source
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
Bowofola
la source
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.

Shaun Luttin
la source
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
KCD
la source
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.

Jim Aho
la source
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
khablander
la source
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
honzakuzel1989
la source