【问题标题】:How can I clear the NuGet package cache using the command line?如何使用命令行清除 NuGet 包缓存?
【发布时间】:2015-09-05 03:35:21
【问题描述】:

我可以使用 Visual Studio 菜单工具选项NuGet 包管理器常规清除我的开发计算机的 NuGet 包缓存/em>:清除包缓存按钮。

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

我错过了什么吗?

【问题讨论】:

标签: nuget nuget-package


【解决方案1】:

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

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

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

nuget locals all -list

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

nuget locals all -clear

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

【讨论】:

  • 适用于 3.3,但仅适用于当前用户 - 我的构建服务器上存在损坏的本地缓存问题,该服务器(可悲)在本地系统下运行,因此未列出缓存 -实际位置是 `C:\Windows\SysWOW64\config\systemprofile\AppData\Local\NuGet\Cache`
  • 也许您应该在与构建操作相同的用户下运行清除操作。要么配置专用的构建用户,要么使用技巧在本地系统下运行清除。
  • 是否有可能从缓存中删除特定的 NuGet?例如:我想从缓存中删除 NuGet X,但不知道 NuGet 缓存位置,在这种情况下如何从缓存中单独删除“X”
  • 我必须运行 nuget update -self 来更新我从这个链接下载的 nuget.exe 否则我会收到错误 Unknown commmand: 'locals'
  • 确保关闭 VS,因为 devenv.exe 可能会阻止某些包文件夹并且不会被清除。
【解决方案2】:

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

如果您使用的是 .NET Core,您可以使用此命令清除缓存,从 .NET Core 工具 1.0 开始应该可以使用:

dotnet nuget locals all --clear

【讨论】:

  • 所以它回来了! :-)。我很好奇它是否会在 VS 2019 中再次被删除:-)
  • 命令行使用dotnet nuget locals all --clear很有用,谢谢
  • 命令dotnet nuget locals all --clear 运行良好。我不必安装任何额外的 nuget cmd 工具。我的 SSD 又能呼吸了!
  • 现在在 VS 2019 @g.pickardou 中不会删除此按钮。
  • dotnet nugget locals all -c 不会删除 %LOCALAPPDATA%\NuGet\Cache\ 文件夹。
【解决方案3】:

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

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

【讨论】:

  • 在询问时这是唯一的解决方案,因此也是最佳答案。现在我已取消标记,并在尝试后记下了@rmoore 的答案。
  • 我需要为不同的用户(构建标识)清除缓存,这是清除缓存的唯一机制。命令行工具只会为我自己的身份清除缓存。
【解决方案4】:

对我来说,我必须进去:

%userprofile%\.nuget\packages

【讨论】:

  • 这是下载并保存所有 nuget 的正确路径
  • 而且,我有 2.04 Gb nuget 包:o
  • 2.04GB 与“hello world”节点应用程序的 node_modules 大致相同;)
【解决方案5】:

dotnet nuget locals all --clear

如果您使用的是 .NET Core。

【讨论】:

  • 我建议在你去吃午饭之前这样做。
  • 清除很快,只是下一个构建需要一点时间。
【解决方案6】:

这增加了rm8x's answer

下载并安装 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 因为随着时间的推移包会更新,你最终会得到Batmaci 1.0Batmaci 1.1Batmaci 1.2,你需要的只是最新的
  • 我们在构建服务器上偶尔会遇到在缓存中找不到 NuGet 包的问题。我们通过始终在构建开始时清除缓存来解决它。
【解决方案7】:

请注意,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

【讨论】:

  • 我会使用 Ruslan 的上述方法,因为即使通过 --no-cache 包我也会遇到一些问题
  • Running dotnet restore --no-cache 为我工作,但我必须在以管理员身份运行的 Powershell 提示符下进行操作
【解决方案8】:

如果您需要清除构建服务器/代理的 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 资源管理器。
【解决方案9】:

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

例如:

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

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

rm $env:LOCALAPPDATA\NuGet\Cache\*.nupkg 2> $null

【讨论】:

    【解决方案10】:

    我最终来到这里是因为我试图弄清楚如何从缓存中删除 特定 nuget 包。上面的答案是关于使用nuget locals all -clear删除所有本地包。

    如果有人有兴趣清除特定包裹,我将分享我的发现:

    • 您目前无法使用nugetdotnet 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>
    

    【讨论】:

      【解决方案11】:

      对于那些使用 sudo yum install nuget 在 RHEL7 上(例如,从 EPEL 存储库)安装 nuget 的用户,这里是本地缓存所在的位置:

      ~/.local/share/NuGet/Cache
      

      【讨论】:

        【解决方案12】:

        我在这个文件夹中看到了我的 nugets(在构建服务器上):c:\Windows\System32\config\systemprofile.nuget\packages\

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-11-10
          • 1970-01-01
          • 1970-01-01
          • 2017-08-17
          • 2011-01-15
          • 1970-01-01
          • 2014-05-28
          • 1970-01-01
          相关资源
          最近更新 更多