例如,卸载包含许多依赖项的包,例如WindowsAzure.Storage
:
1)“管理NuGet包UI”中的卸载按钮会保留所有依赖项(大部分未使用)。 完美无缺,为什么我需要卸载未使用的依赖项?
2)好的,the docs提到-RemoveDependencies
,其描述为:
卸载程序包及其未使用的依赖项。也就是说,如果任何依赖项具有依赖于它的另一个包,则会跳过它。
描述似乎非常清楚,令人印象深刻,这不是默认值,但无论如何,所以让我们试一试:
PM> Uninstall-Package WindowsAzure.Storage -RemoveDependencies
Attempting to gather dependency information for package 'WindowsAzure.Storage.7.1.2' with respect to project '***', targeting '.NETFramework,Version=v4.5.2'
Resolving actions to uninstall package 'WindowsAzure.Storage.7.1.2'
Uninstall-Package : Unable to uninstall 'Newtonsoft.Json.9.0.1' because '***, Hyak.Common.1.0.2, Microsoft.Azure.Common.Dependencies.1.0.0' depend on it.
At line:1 char:1
+ Uninstall-Package WindowsAzure.Storage -RemoveDependencies
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Uninstall-Package], Exception
+ FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.UninstallPackageCommand
笏?
不,没有其他包依赖于WindowsAzure.Storage
(它几乎是根包)
好的,所以项目中可能有些东西搞砸了?
创建了新的解决方案,已安装WindowsAzure.Storage
和Nancy.Serialization.JsonNet
(均取决于Newtonsoft.Json
),尝试卸载WindowsAzure.Storage
- 结果相同。
这甚至应该有用吗?
VS 2015 UPD3
UPD 确认是一个错误,很可能没有得到修复,显然唯一的方法就是使用更新的包模型。有关创建GitHub问题的链接,请参阅已接受的答案
答案 0 :(得分:0)
我遇到了同样的问题,并通过不同版本的NuGet Package Manager进行了测试。所以我已将此问题提交给GitHub。您可以为此问题添加评论。
https://github.com/NuGet/Home/issues/4026
在此问题解决之前,我担心我们需要手动逐个卸载软件包及其依赖项。
您还可以使用“Uninstall-Package WindowsAzure.Storage -RemoveDependencies -Force”命令。虽然它会强制卸载依赖于其他软件包的依赖项,但我们可以为该软件包重新安装这些依赖项。它比手动卸载软件包及其所有依赖项更快。