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

g.p*_*dou 370 nuget nuget-package

我可以使用VS Tools/Options/NuGet Package Manager/General:[Clear Package Cache]按钮清除我的开发计算机的NuGet包缓存.

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

我错过了什么?

rm8*_*m8x 592

首先,从这里下载NuGet命令行工具.

接下来,打开命令提示符和下载cd的目录nuget.exe.

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

nuget locals all -list
Run Code Online (Sandbox Code Playgroud)

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

nuget locals all -clear
Run Code Online (Sandbox Code Playgroud)

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

  • 我必须运行`nuget update -self`来更新我从这个链接下载的_nuget.exe_否则我收到错误`Unknown commmand:'locals'` (19认同)
  • 很好地适用于3.3但仅适用于当前用户 - 我的构建服务器上存在损坏的本地缓存问题(遗憾地)在本地系统下运行,因此缓存未列出 - 实际位置是`C:\ Windows\Syswow64资料\ CONFIG\systemprofile \应用程序数据\本地\的NuGet \缓存\` (8认同)
  • 请小心使用此命令。会导致后续Visual Studio大量下载和CPU占用。使用“dotnet nuget locals http-cache --clear”似乎是更合理的选择。但它将提供更少的磁盘空间。 (3认同)
  • 也许您应该在与构建操作相同的用户下运行清除操作。要么配置专用的构建用户,要么使用技巧在本地系统下运行清除。 (2认同)
  • 是否有可能从缓存中删除特定的NuGet?例如:我想从缓存中删除NuGet X并且不知道NuGet缓存位置,在这种情况下如何从缓存中单独删除"X" (2认同)
  • 确保你关闭了你的 VS,因为 `devenv.exe` 可能会阻塞一些包文件夹并且它们不会被清除。 (2认同)

Ric*_*cky 202

在Visual Studio 2017中,转到工具 - > Nuget包管理器 - >包管理器设置.你可能会发现一个按钮"Clear All NuGet Cache(s)" 在此输入图像描述

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

dotnet nuget locals all --clear

  • 命令行用法`dotnet nuget locals all --clear`非常有用,谢谢 (12认同)
  • 所以回来了!:-).我很好奇它是否会在VS 2019中再次删除:-) (7认同)
  • 命令 `dotnet nuget locals all --clear` 工作得很好。我不必安装任何额外的 nuget cmd 工具。我的SSD又可以呼吸了! (3认同)
  • 现在将来,这个按钮在 VS 2019 @g.pickardou 中不会被删除。 (2认同)

Kil*_*man 84

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

del %LOCALAPPDATA%\NuGet\Cache\*.nupkg /q
Run Code Online (Sandbox Code Playgroud)

  • 在询问这是唯一的解决方案时,最好的答案也是如此.现在我已经取消了它的标记,并在试用后将@ rmoore的答案归功于它. (5认同)

Bow*_*ola 24

对我来说,我必须进去:

%userprofile%\.nuget\packages
Run Code Online (Sandbox Code Playgroud)

  • 2.04GB与"hello world"节点应用程序的node_modules大致相同;) (17认同)
  • 这是下载和保存所有nugets的正确途径 (2认同)
  • 而且,我有2.04 Gb nuget包:o (2认同)

Sha*_*tin 17

这增加了rmoore的答案.

下载并安装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\
Run Code Online (Sandbox Code Playgroud)

我们现在可以手动删除它们,或者如rmoore建议的那样,使用nuget locals all -clear.

  • @batmaci 因为随着时间的推移软件包会更新,你最终会得到 `Batmaci 1.0`、`Batmaci 1.1`、`Batmaci 1.2`,你只需要最新的 (3认同)

Ela*_*ode 17

清除3.x +缓存(使用任一命令)

dotnet nuget locals http-cache --clear
nuget locals http-cache -clear
Run Code Online (Sandbox Code Playgroud)

清除2.x缓存(仅限NuGet CLI 3.5和更早版本)

nuget locals packages-cache -clear
Run Code Online (Sandbox Code Playgroud)

清除全局包文件夹(使用任一命令)

dotnet nuget locals global-packages --clear
nuget locals global-packages -clear
Run Code Online (Sandbox Code Playgroud)

清除临时缓存(使用任一命令)

dotnet nuget locals temp --clear
nuget locals temp -clear
Run Code Online (Sandbox Code Playgroud)

清除插件缓存(使用任一命令)

dotnet nuget locals plugins-cache --clear
nuget locals plugins-cache -clear
Run Code Online (Sandbox Code Playgroud)

清除所有缓存(使用任一命令)

dotnet nuget locals all --clear
nuget locals all -clear
Run Code Online (Sandbox Code Playgroud)

当前在Visual Studio中打开的项目使用的所有程序包都不会从global-packages文件夹中清除。

更多细节


Tim*_*ell 17

清除缓存

使用 dotnet 核心 cli

dotnet nuget locals all --clear

使用 Visual Studio 2017

  1. 转到菜单工具NuGet 包管理器包管理器设置
  2. 点击Clear All NuGet Cache(s)

Visual Studio NuGet 包管理器常规设置屏幕截图

使用 nuget cli

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

nuget locals all -clear
Run Code Online (Sandbox Code Playgroud)

使用 windows 命令行

del %LOCALAPPDATA%\NuGet\Cache\*.nupkg /q
Run Code Online (Sandbox Code Playgroud)

(可以在.bat文件中使用)

使用 PowerShell

rm $env:LOCALAPPDATA\NuGet\Cache\*.nupkg
Run Code Online (Sandbox Code Playgroud)

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

rm $env:LOCALAPPDATA\NuGet\Cache\*.nupkg 2> $null
Run Code Online (Sandbox Code Playgroud)

缓存位置

视窗

%userprofile%\.nuget\packages
Run Code Online (Sandbox Code Playgroud)

Linux

~/.nuget/
Run Code Online (Sandbox Code Playgroud)

构建服务器

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

例子:

C:\Windows\ServiceProfiles\NetworkService\AppData\Local\NuGet\Cache
Run Code Online (Sandbox Code Playgroud)

为方便起见,此答案汇总了所有现有答案


KCD*_*KCD 10

请注意,dnxFeed 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/
Run Code Online (Sandbox Code Playgroud)

哪个你可以清楚

dnu clear-http-cache
Run Code Online (Sandbox Code Playgroud)

现在我们只需要找出新dotnetcli工具上的命令

更新 ...这里是:

dotnet restore --no-cache
Run Code Online (Sandbox Code Playgroud)

  • 我会采用 Ruslan 的上述方法,因为我对包甚至通过 --no-cache 也有一些问题 (2认同)

Jim*_*Aho 6

dotnet nuget locals all --clear

如果您使用的是.NET Core。

  • 清理很快,只是下一个构建需要一点时间。 (7认同)
  • 我建议你在吃午饭之前这样做。 (4认同)

hon*_*989 5

你也可以使用 PowerShell(和我一样)。

例如:

rm $env:LOCALAPPDATA\NuGet\Cache\*.nupkg
Run Code Online (Sandbox Code Playgroud)

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

rm $env:LOCALAPPDATA\NuGet\Cache\*.nupkg 2> $null
Run Code Online (Sandbox Code Playgroud)


小智 5

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

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

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

  • 我冒昧地标记了路径以使其更具可读性,并将 [windows dir] 替换为 `%windir%`,当您进入例如 windows 资源管理器时,它会自动将您置于正确的目录中。 (3认同)