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

如何使用命令行清除NuGet包缓存?,nuget,nuget-package,Nuget,Nuget Package,我可以使用VisualStudio菜单工具清除开发计算机的NuGet软件包缓存→ 选择权→ NuGet包管理器→ 常规:清除包缓存按钮 我想在命令行上执行此操作。很遗憾,我找不到nuget.exe的相关命令行开关 我错过了什么吗?nuget.exe实用程序没有此功能,但是如果nuget缓存只是您计算机上的一个文件夹,您可以手动删除这些文件。只需将其添加到批处理文件: del %LOCALAPPDATA%\NuGet\Cache\*.nupkg /q 首先,从下载NuGet命令行工具 接下来,打

我可以使用VisualStudio菜单工具清除开发计算机的NuGet软件包缓存→ 选择权→ NuGet包管理器→ 常规:清除包缓存按钮

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


我错过了什么吗?

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

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

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

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

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

nuget locals all -list
nuget locals all -clear
您可以使用以下命令清除所有缓存:

nuget locals all -list
nuget locals all -clear
参考资料:

这增加了

下载并安装NuGet命令行工具

  • 从巧克力→
  • 来自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
rm $env:LOCALAPPDATA\NuGet\Cache\*.nupkg
或“安静”模式(无错误消息):


如果需要清除生成服务器/代理的NuGet缓存,可以在此处找到NuGet包的缓存:

%windir%/ServiceProfiles/[生成服务下的帐户运行]\AppData\Local\NuGet\Cache

例如:

C:\Windows\ServiceProfiles\NetworkService\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 tools 1.0中起作用:

dotnet nuget locals all --clear

dotnet nuget locals all--clear

如果您正在使用.NET Core。

清除缓存 使用dotnet core cli
dotnet nuget locals all--clear

与Visual Studio 2017合作
  • 转到菜单工具→ NuGet包管理器→ 包管理器设置
  • 单击“清除所有NuGet缓存”:
  • 使用nuget cli 下载并安装NuGet命令行工具

    • 从巧克力→
    • 来自NuGet.org→
    使用windows命令行 (可在
    .bat
    文件中使用)

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

    缓存位置 窗户 Linux 构建服务器
    %windir%/ServiceProfiles/[生成服务下的帐户运行]\AppData\Local\NuGet\Cache

    例如:

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



    此答案是所有现有答案的汇总,以方便您使用

    此选项在2015年款VS版本中缺失。因此,我使用的是公认的答案。Microsoft的doc:适用于3.3,但仅适用于当前用户-我遇到了一个问题,我们的构建服务器上有一个损坏的本地缓存(遗憾的是)在本地系统下运行,因此,缓存没有列出-实际位置是`C:\Windows\SysWOW64\config\systemprofile\AppData\Local\NuGet\cache`也许您应该在与生成操作相同的用户下运行清除操作。配置一个专用的构建用户,或者使用技巧在本地系统下运行清除。是否有可能从缓存中删除特定的NuGet?例如:我想从缓存中删除NuGet X,但不知道NuGet缓存的位置,在这种情况下如何删除“X”单独从缓存我必须运行
    nuget update-self
    来更新我从这个链接下载的nuget.exe,否则我会收到错误
    未知命令:“locals”
    请确保关闭你的VS,因为
    devenv.exe
    可能会阻塞一些包文件夹,它们不会被清除。在询问时,这是唯一的错误解决方案,所以是最好的答案。现在,我已经取消了标记,并在尝试之后相信了@rmoore的答案。我需要为其他用户清除缓存(构建标识),而这是清除缓存的唯一机制。命令行工具只会清除我自己身份的缓存。我随意标记了路径以使其更可读,并将[windows dir]替换为
    %windir%
    ,当您进入windows资源管理器时,它会自动将您置于正确的目录中。如果nuget将在每次生成时生成所有这些内容,那么删除有什么意义?为什么nuget确实要创建这么多文件夹?@batmaci,因为随着时间的推移,包会被更新,最终会出现
    batmaci 1.0
    batmaci 1.1
    batmaci 1.2
    ,您只需要最新的一个,我们的构建服务器上偶尔会出现问题,在缓存中找不到nuget包。我们总是在构建开始时清除缓存,从而解决了这个问题。我会使用Ruslan的上述方法,因为我甚至在传递包时也遇到了一些问题--没有缓存运行
    dotnet restore--没有缓存对我有效,但我必须从作为管理员运行的Powershell提示符中执行此操作。这是下载所有nuget和Kepta的正确路径,我有2.04 Gb nuget软件包:o2.04GB与“hello world”节点应用程序的node_模块大致相同;)它回来了!:-)。我很好奇它是否会在VS2019中再次被删除:-)命令行用法
    dotnet numget locals all--clear
    非常有用,感谢命令
    dotnet numget locals all--clear
    工作得非常好。我不需要安装任何额外的nuget cmd工具。我的心又能呼吸了!现在,在将来的VS 2019@g.pickardou中,此按钮不会被删除。
    dotnet nugget locals all-c
    不会删除%LOCALAPPDATA%\NuGet\Cache\folder。我建议您在
    ~/.nuget/
    
    C:\Windows\ServiceProfiles\NetworkService\AppData\Local\NuGet\Cache