【问题标题】:NuGet fails to uninstall package recursively if some dependencies are used如果使用某些依赖项,NuGet 无法递归卸载包
【发布时间】:2016-12-09 09:39:25
【问题描述】:

例如,卸载具有大量依赖项的软件包,例如 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 问题的链接,请参阅已接受的答案

【问题讨论】:

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


    【解决方案1】:

    我遇到了同样的问题,并通过不同版本的 NuGet 包管理器进行了测试。所以我已经将此问题提交给 GitHub。您可以为此问题添加您的 cmets。

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

    在这个问题解决之前,恐怕我们需要手动一一卸载包及其依赖。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-08
      • 2018-04-13
      • 1970-01-01
      • 2019-03-19
      • 1970-01-01
      相关资源
      最近更新 更多