ChatGPT解决这个技术问题 Extra ChatGPT

如何删除解决方案中任何项目未引用的 NuGet 包?

不知何故,在升级到 VS2012 和 .NET 4.5 期间,我设法让 NuGet 感到困惑。包管理器(和包文件夹)中出现了我无法删除的包(我相信它们是旧的 ASP.NET NuGet 包,已被新版本的新包名称替换。它们每个都只有一个管理按钮-- 但没有卸载按钮。当您查看它们的使用位置时,您会发现解决方案的任何项目都没有引用它们?它们没有显示卸载?


J
James L

我找到了解决方法。

启用包恢复和自动检查(选项/包管理器/常规)删除包文件夹的全部内容(如果你紧张的话到回收站!) 管理 Nuget 包的解决方案 单击恢复按钮。

NuGet 将仅还原解决方案中使用的包。您最终会得到一组漂亮、精简的软件包。


这不会 notpackages.config 中删除包并且 not 从项目中删除引用吗?
@CodeCaster 很难解析你的双重否定。不会从配置和引用中删除任何内容。这里的想法是删除不再引用的 NuGet 包
优秀的答案!如果您使用的是 TFS,您应该首先在源代码管理器中删除 ./packages 中的所有内容,以便其他客户端(如构建机器)也将删除多余的项目。
@ sprinter252,如果您使用包还原,则不应该首先将包检查到源代码管理中。这是使用包还原的主要好处之一。作为转换为包还原的一部分,应在包文件夹中放置“忽略”规则。
@CarlBussema你是对的。由于新的 NuGet 版本,这并不是那么重要,因为 Nuget 不会将任何二进制文件添加到子文件夹中。所以你只得到文件夹结构。我的评论与 TFS 的默认行为(包括包文件夹)有关。在 TFS Anywhere 上,经常忽略忽略 ;-)。对于使用 Xamarin 的混合项目很重要。
P
Pavel Bakshy

您可以使用带有命令的包管理器控制台:Uninstall-Package PackageId 将其删除,或者只是从解决方案文件夹下的“包”文件夹中删除包文件夹。您可以在此处找到有关包管理器控制台的更多信息:http://docs.nuget.org/docs/reference/package-manager-console-powershell-reference


谢谢帕维尔。我有一种感觉,您可以删除文件夹。这有点令人不安,因为我必须手动确保没有引用任何包(它们似乎没有被引用)。我仍然很想知道为什么包管理器没有显示卸载(或删除)按钮。
解决方案级别的包管理器显示解决方案中对项目的所有包引用,以及放置在包文件夹中但未引用的所有包。对于此软件包,UI 中没有卸载功能。我同意这是不正确行为的结果,但在这种情况下,您应该手动检查。并在您确定是否需要时删除软件包或重新安装它。
通过删除文件夹并返回 NuGet 并查看包,它仍然以某种方式显示为已安装,旁边有绿色勾号,最好使用控制台进行正确的卸载。
@ysrb,它是一个powershell命令,它是动词名词,例如get-user或remove-item,你的例子是名词动词
@ysrb 正如尼克杨所说,此外,这将是对 Install-Package 的一种可怕的恭维。
A
Abrar Jahin

首先打开包管理器控制台。然后从下拉列表中选择您的项目。并运行以下命令来卸载 nuget 包。

获取包

获取您已安装的所有软件包。

接着

卸载包 PagedList.Mvc

--- 卸载名为 PagedList.MVC 的包

信息

PM> Uninstall-Package PagedList.Mvc
Successfully removed 'PagedList.Mvc 4.5.0.0' from MCEMRBPP.PIR.

这个答案对我来说非常有效。我的情况是该软件包仅显示在对话框的“更新”选项卡下......当我点击“更新”时,没有安装该软件包的项目——因此无法更新或删除它。
佚名

如果要删除/卸载应用于解决方案中多个项目的 Nuget 包,请转到:

工具-> Nuget 包管理器-> 管理解决方案的 Nuget 包 在左侧列中的“已安装包”选择“全部”,这样您将看到已安装包的列表和管理按钮。选择管理按钮,你会得到一个弹出窗口,取消选中项目名称中的复选框,然后确定

包管理器的其余工作将为您完成。


这绝对是我正在寻找的答案,谢谢!
Z
Zach Ioannou

VS2019 > 工具 > 选项 > Nuget 包管理器 > 常规 > 点击“清除所有 Nuger 缓存”


谢谢你。这解决了我的问题。参考资料不见了。但它们仍然显示在解决方案探索中。
C
Community

如果您已使用 Uninstall-Package 实用程序删除了软件包并从解决方案下的软件包目录中删除了所需的软件包(并且您仍然收到错误),只需在代码编辑器中打开 *.csproj 文件并手动删除标签。例如,我想摆脱 Nuget 包 Xamarin.Forms.Alias 并从 *.csproj 文件中删除了这些行。

https://i.stack.imgur.com/MhfyH.png

最后,不要忘记在 Visual Studio 中提示后重新加载您的项目(更改项目文件后)。我在 Visual Studio 2015 上尝试过,但它应该也可以在 Visual Studio 2010 及更高版本上运行。

希望这可以帮助。


D
Dov Miller

另一种方法是在解决方案的任何项目中安装要删除的未使用包,然后将其卸载,Nuget 也会将其删除。

这里需要一个合适的卸载程序。


有没有办法让它在不重新安装的情况下正确卸载?
i
irfandar

解决方案 1

使用 powershell 管道获取包并在单个语句中删除,如下所示

Get-Package | Uninstall-Package

解决方案 2

如果要卸载选定的软件包,请按照以下步骤操作

使用 GetPackages 获取包列表 下载 Nimble 文本软件 在 NimbleText 中复制 GetPackages 的输出(对于列表窗口中的每一行) 将列分隔符设置为(如果需要,键入 Uninstall-Package $0(使用模式窗口替换)复制结果并将它们粘贴到包管理控制台中

所有人都这样。


你能解释更多关于解决方案 2 的信息吗?我没有做对
解决方案2中的哪个步骤
C
CarenRose

一个 NuGet 包可以引用另一个 NuGet 包。所以,请注意包间的依赖关系。我刚刚卸载了一个谷歌地图包,它随后卸载了 Newtonsoft、Entity Framework 等底层包。

因此,从包文件夹中手动删除特定包会更安全。


J
Jazimov

在包管理器控制台窗口中,通常用于安装包的任何命令都可用于卸载该包。只需将 INSTALL 命令替换为 UNINSTALL。

例如,要安装 PowerTCPTelnet,命令是:

Install-Package PowerTCPTelnet -Version 4.4.9

要卸载相同,命令是:

Uninstall-Package PowerTCPTelnet -Version 4.4.9


L
Lance U. Matthews

如果您想使用 Visual Studio 选项,请参阅How to remove Nuget Packages from Existing Visual Studio solution

第 1 步:在 Visual Studio 中,转到 Tools/NuGet Package Manager/Manage NuGet Packages for Solution…

第 2 步:从当前解决方案中取消选中您的项目

第 3 步:取消选择项目并按 OK


最好在 StackOverflow 中写出答案,而不是仅仅发布一个链接,因为链接将来可能会过期。