如何使用命令行清除NuGet程序包缓存?


404

我可以使用Visual Studio菜单清楚我的开发计算机的NuGet包高速缓存工具选项NuGet包管理器通用Clear Package Cache按钮。

我想在命令行上执行此操作。不幸的是,我找不到nuget.exe的相关命令行开关。

我错过了什么?


10
我的2015 VS版本中缺少此选项
spankmaster79

1
是的,它不见了。所以我正在使用接受的答案。
g.pickardou

Answers:


633

首先,从此处下载NuGet命令行工具。

接下来,打开命令提示符,然后cd转到nuget.exe下载目录。

您可以使用以下命令列出本地缓存:

nuget locals all -list

您可以使用以下命令清除所有缓存:

nuget locals all -clear

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


10
适用于3.3,但仅适用于当前用户-我的构建服务器上的本地缓存损坏了,该缓存在(本地)运行在本地系统上,但出现问题,因此未列出该缓存-实际位置为`C:\ Windows \ SysWOW64 \ config \ systemprofile \ AppData \ Local \ NuGet \ Cache`
Zhaph-Ben Duguid

1
也许您应该在与构建操作相同的用户下运行clear操作。配置专用的构建用户,或者使用技巧在本地系统下运行清除。
g.pickardou '16

2
是否有可能从缓存中删除特定的NuGet?例如:我想从缓存中删除NuGet X,并且不知道NuGet缓存位置,在这种情况下,如何从缓存中单独删除“ X”
user3610920

19
我必须运行nuget update -self更新从此链接下载的nuget.exe,否则会出现错误Unknown commmand: 'locals'
ajbeaven

1
确保您关闭了VS,因为它devenv.exe可能阻止了某些软件包文件夹,并且它们不会被清除。
谢里夫

226

在Visual Studio 2017中,转到菜单工具NuGet软件包管理器软件包管理器设置。您可能会发现一个按钮Clear All NuGet Cache(s)

在此处输入图片说明

如果使用的是.NET Core,则可以使用此命令清除缓存,该命令应在.NET Core工具1.0及更高版本中起作用:

dotnet nuget locals all --clear

7
回来了!:-)。我很好奇它是否会在VS 2019中再次删除:-)
g.pickardou

13
命令行使用dotnet nuget locals all --clear非常有用,谢谢
Boggin

1
命令dotnet nuget locals all --clear完美运行。我不必安装任何额外的nuget cmd工具。我的SSD可以再次呼吸!
吉日库巴

87

nuget.exe实用程序没有此功能,但是看到NuGet缓存只是计算机上的一个文件夹,您可以手动删除文件。只需将其添加到您的批处理文件中:

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

5
在问这是唯一的解决方案时,最好的答案也是。现在,我未对其进行标记,并在尝试后将其归因于@rmoore的回答。
g.pickardou '16

27

对我来说,我必须走进这里:

%userprofile%\.nuget\packages

2
这是所有nuget都下载并保留的正确路径
Alok Rajasukumaran

2
而且,我有2.04 Gb nuget软件包:o
Alok Rajasukumaran

19
2.04GB与“ hello world”节点应用程序的node_modules大致相同;)
删除

20

这增加了rm8x的答案

下载并安装NuGet命令行工具。

列出我们所有的当地人:

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

现在,我们可以手动删除这些文件,或者按照rm8x的建议使用nuget locals all -clear


如果nuget会在每次构建时生成所有这些,删除点有什么意义?为什么nuget确实创建了这么多文件夹?
batmaci

2
@batmaci因为随着时间的推移包得到更新和你结了Batmaci 1.0Batmaci 1.1Batmaci 1.2所有你需要的是最新的一个
Simon_Weaver

在构建服务器上偶尔遇到问题,即在缓存中找不到NuGet软件包。我们通过始终在构建开始时清除缓存来解决此问题。
史蒂夫·赖特

14

请注意,dnx具有不同的缓存来提供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/

你可以用哪个清除

dnu clear-http-cache

现在,我们只需要找出新的dotnetCLI工具上的命令即可。

...这里是:

dotnet restore --no-cache

我会采用Ruslan的上述方法,因为即使通过--no-cache,程序包也存在一些问题
Alexz

运行dotnet restore --no-cache为我工作,但我必须从以管理员
身份


5

如果您需要清除构建服务器/代理的NuGet缓存,则可以在此处找到NuGet软件包的缓存:

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

例:

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

1
我随意标记了路径以使其更具可读性,并用替换了[windows dir] %windir%,当输入例如Windows Explorer时,它将自动将您放在正确的目录中。
贾坦(Kjartan)

3

您也可以使用PowerShell(与我相同)。

例如:

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

或“安静”模式(无错误消息):

rm $env:LOCALAPPDATA\NuGet\Cache\*.nupkg 2> $null
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.