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

     2023-03-27     19

关键词:

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

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

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

我错过了什么吗?

【问题讨论】:

我的 2015 VS 版本中缺少此选项 是的,它不见了。所以我使用的是公认的答案。 微软文档:docs.microsoft.com/en-us/nuget/consume-packages/… 【参考方案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 命令行工具。

来自 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

【讨论】:

如果 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\

【讨论】:

使用命令行清除 Android 设备的 DNS 缓存

...存。【问题讨论】:【参考方案1】:迟到的答案...无论如何,如果您安装了Chrome,请转到: 查看详情

如何发布nuget预发布版本包

】如何发布nuget预发布版本包【英文标题】:Howtopublishnugetprereleaseversionpackage【发布时间】:2012-05-2209:19:56【问题描述】:我了解如何使用nuget命令行发布nuget包nugetcommandline但是我四处搜索我没有找到有关如何发布nuget预发布包的... 查看详情

Powershell:如何在未连接的计算机上安装适用于 PowerShell 的 Nuget 提供程序,以便可以从 PS 命令行安装 nuget 包?

】Powershell:如何在未连接的计算机上安装适用于PowerShell的Nuget提供程序,以便可以从PS命令行安装nuget包?【英文标题】:Powershell:HowdoIinstalltheNugetproviderforPowerShellonaunconnectedmachinesoIcaninstallanugetpackagefromthePScommandline?【发布时间】... 查看详情

使用nuget将我们的asp.netcore类库打包并将程序包(类库)发布到nuget平台上进行管理(代码片段)

...类库)发布到NuGet平台上进行管理本章将和大家简单分享下如何使用NuGet将我们的ASP.NETCore类库打包并将程序包(类库)发布到NuGet平台上进行管理。一、注册并登录NuGet平台NuGet官网:https://www.nuget.org/ 此处我使用的是微软账号进... 查看详情

针对使用nuget命令,因下载超时安装失败的程序包,可以离线方式安装

针对使用nuget命令,因下载超时安装失败的包,可以离线方式安装。VSNuGet离线包(缓存包)nupkg安装:还可以参考该文章:https://blog.csdn.net/dinghqalex/article/details/51280483离线安装步骤:第一步:访问nuget.org网站,找到程序安装包的详... 查看详情

使用nuget将我们的asp.netcore类库打包并将程序包(类库)发布到nuget平台上进行管理(代码片段)

本章将和大家简单分享下如何使用NuGet将我们的ASP.NETCore类库打包并将程序包(类库)发布到NuGet平台上进行管理。一、注册并登录NuGet平台NuGet官网:https://www.nuget.org/ 此处我使用的是微软账号进行关联登录 登录成功后就可... 查看详情

新手:如何恢复nuget包?

】新手:如何恢复nuget包?【英文标题】:Newbie:howtorestorenugetpackages?【发布时间】:2021-09-1312:14:13【问题描述】:我已经下载了一个基于NuGet包的C#项目,但我无法恢复它们。在这里,您可以看到当我要求恢复这些软件包时会发生... 查看详情

如何下载没有 nuget.exe 或 Visual Studio 扩展的 Nuget 包?

】如何下载没有nuget.exe或VisualStudio扩展的Nuget包?【英文标题】:HowtodownloadaNugetpackagewithoutnuget.exeorVisualStudioextension?【发布时间】:2013-01-3110:30:14【问题描述】:如何下​​载NuGet包?我没有NuGetVisualStudio扩展或命令行程序nuget.exe... 查看详情

通过命令行在 VS Installer 中启用 NuGet 包管理器。 (作为自动化脚本的一部分)

】通过命令行在VSInstaller中启用NuGet包管理器。(作为自动化脚本的一部分)【英文标题】:EnableNuGetpackagemanagerinVSInstallerthroughcommandline.(aspartofautomatedscript)【发布时间】:2020-02-0416:38:52【问题描述】:我想通过命令行启用NuGet包... 查看详情

无法安装 NuGet 包:回退到 NuGet 本地缓存 [重复]

...描述】:我是堆栈溢出社区的新手。现在我正在学习c#(使用VisualStudio2012)并致力于在谷歌驱动器中上传文件。我按照这个教程http://www.daimto.com/ 查看详情

使用baget来管理内部nuget包

...署服务了,接下来就是上传nuget包到这个服务了二、上传使用BaGet来管理自己的nuget包1、下面的工作就是制作nuget包,并且把nuget包上传到这个服务了,具体方法很简单,切换到Upload菜单下,可以看到有很多种上传方式ps:关于制作n... 查看详情

.net使用一行命令轻松生成efcore项目框架(代码片段)

...dotnetef还可以生成和管理实体和上下文代码。本文将介绍如何使用dotnetef动态生成代码。一、环境准备1、项目准备用vs2022新建一个.NET6的asp.netcoremvc项目,然后按照:工具->Nuget包管理器->nuget管理解决方案包。安装一些nuget包Mi... 查看详情

nuget 包无法在 VS 2019 中下载

...】:2021-01-2422:25:03【问题描述】:我正在尝试从我的组织使用***维护的私有proget服务器恢复我的.Net核心解决方案的包。但由于一些未知的网络问题,它在过去7天没有完成。我尝试清除nuget缓存,运行nugetrestore、dotnetrestore并构建... 查看详情

华为云提供针对nuget包管理器的缓存加速服务(代码片段)

在VisualStudio2013、2015、2017中,使用的是Nuget包管理器对第三方组件进行管理升级的。而且Nuget是我们使用.NETCore的一项基础设施,.NET的软件包管理器NuGet.org是一项面向全球用户搭建的服务,不论用户身在何处,NuGet.org都应该有能... 查看详情

nuget在vs中的使用

只要在vs-->工具-->库程序包管理器-->程序包管理控制台,然后在命令行输入命令即可自动安装。  参考网站http://www.cnblogs.com/n-pei/archive/2011/05/02/2034508.html 查看详情

如何清除颤振项目缓存?

】如何清除颤振项目缓存?【英文标题】:howtoclearflutterprojectcache?【发布时间】:2020-12-2421:54:04【问题描述】:我的颤振项目遇到问题。早些时候它可以工作,然后我升级到最新版本,出现iOSApp构建问题,然后我降级了flutter版... 查看详情

如何在引用程序集中的 DbContext 上触发更新数据库(NuGet 包)

】如何在引用程序集中的DbContext上触发更新数据库(NuGet包)【英文标题】:HowtotriggerUpdate-DatabaseonaDbContextinareferencedassembly(NuGetpackage)【发布时间】:2016-11-2100:26:58【问题描述】:使用包管理器控制台,我可以运行类似于以下命... 查看详情

如何使用 NuGet.Core 创建 NuGet 包?

】如何使用NuGet.Core创建NuGet包?【英文标题】:HowtocreateaNuGetPackageusingNuGet.Core?【发布时间】:2011-10-1203:20:35【问题描述】:我想创建一个使用NuGet包NuGet.Core的应用程序。它有一个名为PackageBuilder的类,使之成为可能。是否有可用... 查看详情