【问题标题】:How to clear a specific NuGet package from local cache using command line?如何使用命令行从本地缓存中清除特定的 NuGet 包?
【发布时间】:2021-11-03 02:50:42
【问题描述】:

问题

是否可以使用命令行从 NuGet 本地缓存中清除特定的 NuGet 包?

上下文

我想确保在为项目执行包还原操作时,将还原最新的服务器二进制文件,而不是缓存中的内容。同时我不想从缓存中删除所有包。

【问题讨论】:

    标签: nuget nuget-package


    【解决方案1】:

    如果你有 NuGet.exe 3.3 或更高版本,你可以从命令行清除整个缓存:

    nuget locals <all | http-cache | packages-cache | global-packages> -clear
    

    如果您的 NuGet 包已下载到 NuGet v2 缓存,那么您只需一个简单的脚本即可从包缓存中删除特定的 .nupkg 文件。

    del %LocalAppData%\NuGet\Cache\NUnit.2.6.4.nupkg
    

    使用 NuGet v3 缓存,结构有点不同,因此您需要删除一组目录:

    rmdir %UserProfile%\.nuget\packages\NUnit\2.6.4 /s
    

    【讨论】:

      【解决方案2】:
      • 您目前无法使用nugetdotnet cli 从缓存中删除特定包。有一个 github 问题需要解决:https://github.com/NuGet/Home/issues/5713
      • 正如Matt Ward's answer 所说,您不得不使用文件系统命令从缓存中删除一个包。使用 nuget V3+,在 mac/linux 上,命令是:
      rm -rf ~/.nuget/packages/<package-name>
      
      • 当我试图从缓存中删除特定包时,我真正想要的是在将该包重新发布到本地 nuget 存储库之前执行此操作(我使用本地存储库的固定版本号来制作 @ 987654323@)。我通过将以下内容添加到 nuget 打包库的 .csproj 文件中来完成此操作:
          <Project>
            <Target Name="DeleteLocalCache" BeforeTargets="Pack">
              <RemoveDir Directories="$(NugetPackageRoot)/$(PackageId.ToLower())/1.0.0-local"/>
            </Target>
          </Project>
      

      【讨论】:

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