我正在尝试卸载 NuGet 安装的一些包。根据此处描述的文档,当我选择已安装的包时,我应该会看到一个卸载按钮(下面的第一个屏幕截图)。但是,我只看到一个管理按钮(下面的第二个屏幕截图)。谁能告诉我如何卸载软件包?
6 回答
最后,我发现我必须手动编辑 .sln 解决方案文件并删除这些行:
GlobalSection(ExtensibilityGlobals) = postSolution
EnterpriseLibraryConfigurationToolBinariesPath = packages\Unity.2.1.505.0\lib\NET35;packages\Unity.Interception.2.1.505.0\lib\NET35;packages\EnterpriseLibrary.Common.5.0.505.0\lib\NET35;packages\EnterpriseLibrary.Data.5.0.505.0\lib\NET35
EndGlobalSection
在解决方案文件中删除上述行后,这些包在 NuGet 包窗口“已安装包”页面中消失了。只剩下一个包,我现在可以看到“卸载”按钮。
编辑: 我还必须删除解决方案目录中的 packages 文件夹。
有时存在不允许卸载软件包的依赖关系,但无论如何您都需要这样做(即,如果您无意中安装了具有依赖关系的软件包的两个不同版本)。
发生这种情况时,卸载包的唯一方法是强制卸载,这只能通过包管理器控制台完成。
在进入控制台之前,您应该打开“管理 NuGet 包”窗口,并记下您的包的 Id 和版本,当您单击包时,它会显示在右侧窗格中。
然后你可以关闭 Manage 窗口,并打开控制台(Package Manager Console),然后运行这个命令:
uninstall-package -Id YourPackageId -Force -Version YourPackageVersion
注意-Force参数。例如
uninstall-package -Id Unity -Force -Version 3.0.1304.0
此命令允许在与版本 2 并行安装时卸载版本 3,这无法通过管理窗口完成。
我最近有类似的问题。我的项目运行良好,但我无法再通过 NuGet 包管理器添加或删除任何包,因为 EnterpriseLibrary 5.0.505 在源代码中显示为缺失。但尝试恢复或删除它失败,并出现错误“无法找到版本 '5.0.505. of package 'EnterpriseLibrary'”。
我将此追溯到在 packages.config 文件中有以下引用:
<package id="EnterpriseLibrary" version="5.0.505" targetFramework="net4" />
将此与我最近添加包的其他解决方案进行比较,我将其更改为以下解决方案:
<package id="EnterpriseLibrary.Common" version="5.0.505.0" targetFramework="net4" />
我从未手动编辑过任何 package.config 文件,所以我不知道不匹配是如何发生的。自从最初包含软件包而不更新配置文件以来,可能参考已更改...?
我在删除具有依赖关系的 Code first lib CTP5 时遇到问题,卸载没有返回任何消息并且没有删除任何内容。从您需要删除的 packages.config 中删除引用。之后它将不再显示在 nuget 中,您可以重新安装或继续。
使用 VS IDE 管理 NuGet 包对话框或包管理器控制台后,您可能必须手动删除文件系统上的解决方案文件或其他文件,这些文件不是包文件夹中的包的一部分。
我正在评估 Microsoft.AspNet.FriendlyUrls 包,它向我的 ASP.NET Web 应用程序项目/解决方案添加了一个母版页、一个用户控件、一个类代码文件和一个 packages.config 文件。在使用 NuGet 包对话框删除包之前,我犯了一个错误,即从解决方案中手动撤消/删除这些文件。在那一刻,一切都变得混乱了。
正如其他人所说,删除包文件夹是解决方案。但是后来我不得不手动找出该文件夹之外的其他文件也应该被删除。