我可以使用 Visual Studio 菜单工具 → 选项 → NuGet 包管理器 → 常规:清除包缓存按钮清除我的开发计算机的 NuGet 包缓存。
我想在命令行上执行此操作。不幸的是,我找不到 nuget.exe 的相关命令行开关。
我错过了什么?
首先,从 here 下载 NuGet 命令行工具。
接下来,打开命令提示符并将 cd
转到下载 nuget.exe
的目录。
您可以使用以下命令列出本地缓存:
nuget locals all -list
您可以使用以下命令清除所有缓存:
nuget locals all -clear
参考:https://docs.nuget.org/consume/command-line-reference
在 Visual Studio 2017 中,转到菜单工具 → NuGet 包管理器 → 包管理器设置。您可能会发现一个按钮,清除所有 NuGet 缓存:
https://i.stack.imgur.com/Lg2Mo.jpg
如果您使用的是 .NET Core,则可以使用此命令清除缓存,该命令应从 .NET Core 工具 1.0 开始工作:
dotnet nuget locals all --clear
dotnet nugget locals all -c
不删除 %LOCALAPPDATA%\NuGet\Cache\ 文件夹。
nuget.exe 实用程序没有此功能,但看到 NuGet 缓存只是您计算机上的一个文件夹,您可以手动删除文件。只需将其添加到您的批处理文件中:
del %LOCALAPPDATA%\NuGet\Cache\*.nupkg /q
dotnet nuget locals all --clear
如果您使用的是 .NET Core。
对我来说,我必须进入这里:
%userprofile%\.nuget\packages
这增加了 rm8x's answer。
下载并安装 NuGet 命令行工具。
从 Chocolatey → https://chocolatey.org/packages/NuGet.CommandLine
从 NuGet.org → https://www.nuget.org/
列出我们所有的当地人:
$ 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
。
Batmaci 1.0
、Batmaci 1.1
、Batmaci 1.2
,您所需要的只是最新的
请注意,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
现在我们只需要找出新的 dotnet
CLI 工具上的命令是什么。
......这里是:
dotnet restore --no-cache
dotnet restore --no-cache
对我有用,但我必须从以管理员身份运行的 Powershell 提示符执行此操作
如果您需要清除构建服务器/代理的 NuGet 缓存,您可以在此处找到 NuGet 包的缓存:
%windir%/ServiceProfiles/[account under build service runs]\AppData\Local\NuGet\Cache
例子:
C:\Windows\ServiceProfiles\NetworkService\AppData\Local\NuGet\Cache
%windir%
,当您进入 Windows 资源管理器时,它会自动将您置于正确的目录中。
你也可以使用 PowerShell(和我一样)。
例如:
rm $env:LOCALAPPDATA\NuGet\Cache\*.nupkg
或“安静”模式(没有错误消息):
rm $env:LOCALAPPDATA\NuGet\Cache\*.nupkg 2> $null
我最终来到这里是因为我试图弄清楚如何从缓存中删除 特定 nuget 包。上面的答案谈论使用 nuget locals all -clear
删除所有本地包。
如果有人有兴趣清除特定包裹,我将分享我的发现:
您目前无法使用 nuget 或 dotnet cli 清除特定包。有一个 github 问题可以解决这个问题:https://github.com/NuGet/Home/issues/5713
现在,您必须求助于文件系统命令(如上面提到的一些答案)来删除特定的包。对于 mac/linux,它是 rm -rf ~/.nuget/packages/
我真正需要的是一种方法来删除我将要重新发布到本地 nuget 存储库的特定包的缓存(使用固定版本号使本地开发更容易)。我通过将以下内容添加到 nuget-packaged 库的 .csproj 文件来完成此操作:
<Project>
<Target Name="DeleteLocalCache" BeforeTargets="Pack">
<RemoveDir Directories="$(NugetPackageRoot)/$(PackageId.ToLower())/1.0.0-local"/>
</Target>
</Project>
对于使用 sudo yum install nuget
在 RHEL7(例如,从 EPEL 存储库)上安装 nuget
的用户,这里是本地缓存所在的位置:
~/.local/share/NuGet/Cache
我在这个文件夹中看到了我的 nugets(在构建服务器上):c:\Windows\System32\config\systemprofile.nuget\packages\
nuget update -self
来更新我从该链接下载的 nuget.exe,否则我会收到错误Unknown commmand: 'locals'
devenv.exe
可能会阻止某些包文件夹并且它们不会被清除。