如果使用某些依赖项,NuGet无法以递归方式卸载程序包

时间:2016-11-29 03:34:53

标签: c# visual-studio nuget nuget-package

例如,卸载包含许多依赖项的包,例如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.StorageNancy.Serialization.JsonNet(均取决于Newtonsoft.Json),尝试卸载WindowsAzure.Storage - 结果相同。

这甚至应该有用吗?

VS 2015 UPD3

UPD 确认是一个错误,很可能没有得到修复,显然唯一的方法就是使用更新的包模型。有关创建GitHub问题的链接,请参阅已接受的答案

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,并通过不同版本的NuGet Package Manager进行了测试。所以我已将此问题提交给GitHub。您可以为此问题添加评论。

https://github.com/NuGet/Home/issues/4026

在此问题解决之前,我担心我们需要手动逐个卸载软件包及其依赖项。

您还可以使用“Uninstall-Package WindowsAzure.Storage -RemoveDependencies -Force”命令。虽然它会强制卸载依赖于其他软件包的依赖项,但我们可以为该软件包重新安装这些依赖项。它比手动卸载软件包及其所有依赖项更快。