【问题标题】:NuGet - uninstall & remove dependencies ONLY if other projects don't depend on them?NuGet - 仅当其他项目不依赖它们时才卸载和删除依赖项?
【发布时间】:2016-08-22 19:59:41
【问题描述】:

我有一个 NuGet 包,其中除了依赖于其他包之外什么都没有。所以基本上把它想象成“包的包”。其中一个包依赖于我们项目的其他部分也使用的第三方软件。

我的问题是我想卸载 package-of-packages,为此我指定了 -RemoveDependencies 选项。但是,我收到一条错误消息“无法卸载 <third-party package>,因为 <another package we use> 依赖于它。

只有在其他项目不依赖它的情况下,有没有办法卸载依赖项?

【问题讨论】:

  • 恐怕不会。您将不得不忍受它或删除所有内容。

标签: c# .net visual-studio nuget


【解决方案1】:

我通过更改“package-of-packages”范式实现了我想要的结果。我没有将其他包标记为依赖项,而是创建了一个 tools/ 文件夹,并在其中放置了一个 install.ps1 和 uninstall.ps1 powershell 脚本,它们在安装或卸载时运行。 Read more here.

在这些脚本中,我只需发出命令来安装或卸载我选择的软件包。默认情况下,Uninstall-Package 不会删除依赖项,这使我的工作更轻松。它并没有实现我最初的目标,即仅删除项目其他部分不需要的依赖项,它只是保留了任何二阶依赖项。这对我来说不是问题,因为我的包中只有一个具有二阶依赖项。

【讨论】:

    【解决方案2】:

    对于单个项目

    Get-Packages -ProjectName <project> | Uninstall-Package -ProjectName <project>
    

    在包管理控制台中应该可以解决问题。

    由于依赖关系而无法卸载的包将卸载失败,而没有依赖关系的包将卸载成功。

    【讨论】:

      【解决方案3】:

      您需要先卸载所有依赖它的 NuGet 包。然后你就可以移除这些依赖了。

      因为如果有其他包依赖它,如果你删除它,这些包将失去依赖,这将导致这个包不能工作。

      【讨论】:

      • 这与 OP 想要的问题相反。
      猜你喜欢
      • 2019-03-19
      • 2014-12-09
      • 2011-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-21
      • 2020-08-17
      相关资源
      最近更新 更多