如何使用命令行清除 NuGet 包缓存?
How can I clear the NuGet package cache using the command line?
我可以使用 Visual Studio 菜单 工具 → 选项 → NuGet 包管理器清除我的开发计算机的 NuGet 包缓存 → 常规:清除包缓存 按钮。
我想在命令行上执行此操作。不幸的是,我找不到 nuget.exe.
的相关命令行开关
我是不是漏掉了什么?
nuget.exe 实用程序没有此功能,但看到 NuGet 缓存只是您计算机上的一个文件夹,您可以手动删除文件。只需将其添加到您的批处理文件中:
del %LOCALAPPDATA%\NuGet\Cache\*.nupkg /q
首先,从here下载NuGet命令行工具。
接下来,打开命令提示符并 cd
到下载 nuget.exe
的目录。
您可以使用此命令列出本地缓存:
nuget locals all -list
您可以使用此命令清除所有缓存:
nuget locals all -clear
这增加了 。
下载并安装 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
.
你也可以使用PowerShell(和我一样)。
例如:
rm $env:LOCALAPPDATA\NuGet\Cache\*.nupkg
或'quiet'模式(无错误信息):
rm $env:LOCALAPPDATA\NuGet\Cache\*.nupkg 2> $null
如果您需要为您的构建清除 NuGet 缓存 server/agent 您可以在此处找到 NuGet 包的缓存:
%windir%/ServiceProfiles/[account under build service runs]\AppData\Local\NuGet\Cache
示例:
C:\Windows\ServiceProfiles\NetworkService\AppData\Local\NuGet\Cache
请注意 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
对我来说,我必须进入这里:
%userprofile%\.nuget\packages
在 Visual Studio 2017 中,转到菜单 工具 → NuGet 包管理器 → 包管理器设置。您可能会发现一个按钮,清除所有 NuGet 缓存:
如果您使用的是 .NET Core,您可以使用此命令清除缓存,从 .NET Core 工具 1.0 开始应该可以使用:
dotnet nuget locals all --clear
dotnet nuget locals all --clear
如果您使用的是 .NET Core。
我之所以来到这里是因为我试图弄清楚如何从缓存中删除特定 nuget 包。上面的答案讨论了使用 nuget locals all -clear
.
删除所有本地包
如果有人对清除特定包感兴趣,我将分享我的发现:
- 您目前无法使用
nuget
或 dotnet
cli 清除特定包。有一个 github 问题可以解决这个问题:https://github.com/NuGet/Home/issues/5713
- 现在,您必须求助于文件系统命令(如上面提到的一些答案)来删除特定的包。对于 mac/linux,它是
rm -rf ~/.nuget/packages/<package-name>
- 我真正需要的是一种方法来删除我即将重新发布到本地 nuget 存储库的特定包的缓存(使用固定版本号使本地开发更容易)。我通过将以下内容添加到 nuget 打包库的
.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\
我可以使用 Visual Studio 菜单 工具 → 选项 → NuGet 包管理器清除我的开发计算机的 NuGet 包缓存 → 常规:清除包缓存 按钮。
我想在命令行上执行此操作。不幸的是,我找不到 nuget.exe.
的相关命令行开关我是不是漏掉了什么?
nuget.exe 实用程序没有此功能,但看到 NuGet 缓存只是您计算机上的一个文件夹,您可以手动删除文件。只需将其添加到您的批处理文件中:
del %LOCALAPPDATA%\NuGet\Cache\*.nupkg /q
首先,从here下载NuGet命令行工具。
接下来,打开命令提示符并 cd
到下载 nuget.exe
的目录。
您可以使用此命令列出本地缓存:
nuget locals all -list
您可以使用此命令清除所有缓存:
nuget locals all -clear
这增加了
下载并安装 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
.
你也可以使用PowerShell(和我一样)。
例如:
rm $env:LOCALAPPDATA\NuGet\Cache\*.nupkg
或'quiet'模式(无错误信息):
rm $env:LOCALAPPDATA\NuGet\Cache\*.nupkg 2> $null
如果您需要为您的构建清除 NuGet 缓存 server/agent 您可以在此处找到 NuGet 包的缓存:
%windir%/ServiceProfiles/[account under build service runs]\AppData\Local\NuGet\Cache
示例:
C:\Windows\ServiceProfiles\NetworkService\AppData\Local\NuGet\Cache
请注意 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
对我来说,我必须进入这里:
%userprofile%\.nuget\packages
在 Visual Studio 2017 中,转到菜单 工具 → NuGet 包管理器 → 包管理器设置。您可能会发现一个按钮,清除所有 NuGet 缓存:
如果您使用的是 .NET Core,您可以使用此命令清除缓存,从 .NET Core 工具 1.0 开始应该可以使用:
dotnet nuget locals all --clear
dotnet nuget locals all --clear
如果您使用的是 .NET Core。
我之所以来到这里是因为我试图弄清楚如何从缓存中删除特定 nuget 包。上面的答案讨论了使用 nuget locals all -clear
.
如果有人对清除特定包感兴趣,我将分享我的发现:
- 您目前无法使用
nuget
或dotnet
cli 清除特定包。有一个 github 问题可以解决这个问题:https://github.com/NuGet/Home/issues/5713 - 现在,您必须求助于文件系统命令(如上面提到的一些答案)来删除特定的包。对于 mac/linux,它是
rm -rf ~/.nuget/packages/<package-name>
- 我真正需要的是一种方法来删除我即将重新发布到本地 nuget 存储库的特定包的缓存(使用固定版本号使本地开发更容易)。我通过将以下内容添加到 nuget 打包库的
.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\