【发布时间】:2011-07-06 21:42:20
【问题描述】:
我正在尝试卸载一些由 NuGet 安装的包。根据here 描述的文档,当我选择已安装的包时,我应该会看到一个 Uninstall 按钮(下面的第一个屏幕截图)。但是,我只看到一个 Manage 按钮(下面的第二个屏幕截图)。谁能告诉我如何卸载软件包?
【问题讨论】:
标签: nuget nuget-package
我正在尝试卸载一些由 NuGet 安装的包。根据here 描述的文档,当我选择已安装的包时,我应该会看到一个 Uninstall 按钮(下面的第一个屏幕截图)。但是,我只看到一个 Manage 按钮(下面的第二个屏幕截图)。谁能告诉我如何卸载软件包?
【问题讨论】:
标签: nuget nuget-package
如果您向下滚动到您链接到的 NuGet 文档页面的 Managing Installed Packages 部分,您将看到“管理”按钮和说明。
在NuGet 1.4 中引入了一项新功能,允许您在解决方案资源管理器中选择解决方案,并在一个步骤中从多个项目中添加/删除包。以前,您必须在解决方案资源管理器中选择每个项目,然后一次从每个项目中添加/删除包。
如果单击“管理”按钮,将显示“选择项目”对话框,您可以在其中取消选中要从中卸载 NuGet 包的项目。
如果您在解决方案资源管理器中选择项目而不是解决方案,您可以从该选定项目中添加/删除包。在这种情况下,您只会看到安装和卸载按钮。
【讨论】:
最后,我发现我必须手动编辑 .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 和版本,当您单击包时,它会显示在右侧窗格中。
然后你可以关闭管理窗口,打开控制台(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 在源代码中显示为缺失。但尝试恢复或删除它失败,并出现错误“无法找到包 'EnterpriseLibrary' 的版本 '5.0.505.”。
我追查到在 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 包对话框删除包之前,我犯了一个错误,即从解决方案中手动撤消/删除这些文件。在那一刻,一切都变得混乱了。
正如其他人所说,删除包文件夹是解决方案。但后来我不得不手动找出该文件夹之外的其他文件也应该删除。
【讨论】: