【问题标题】:nuget not checking versions when getting the same dependancy multiple times多次获得相同的依赖项时,nuget不检查版本
【发布时间】:2011-07-19 14:11:22
【问题描述】:

我的公司现在正在使用 nuget 来打包我们所有的共享程序集。我们还开始使用标签基于 semver 对它们进行版本控制。

我遇到了 nuget 无法正常工作的情况。

我有 3 个共享程序集....

  • 枚举
  • 常见
  • 业务逻辑

在包引用方面...

  • 通用 => 枚举
  • BusinessLogic => 通用,枚举

BusinessLogic 同时依赖于 Common 和 Enum 的原因是,当它不需要使用刚刚添加的新枚举时,我不想更新 Common 的依赖关系(以及重建、打包、发布)用于业务逻辑

所以,我添加了一个枚举并想在 BusinessLogic 中使用它。

这些是我这样做之前所有内容的版本......

  • 枚举 = 1.4.0
  • 通用 = 1.2.1
  • 业务逻辑 = 2.0.1

我现在将要在 BusinessLogic 中使用的新枚举值添加到 Enum 项目并构建、打包、发布...

  • 枚举 = 1.5.0
  • 通用 = 1.2.1
  • 业务逻辑 = 2.0.1

现在,我对 BusinessLogic 进行更改,提交、推送、打包等...

  • 枚举 = 1.5.0
  • 通用 = 1.2.1
  • 业务逻辑 = 2.1.0

所以,现在依赖项看起来像这样......

  • 通用 => 枚举 1.4.0
  • BusinessLogic => 枚举 1.5.0

现在我跑...

nuget pack BusinessLogic.csproj

我期望发生的是 nuget 会看到 Common 需要 Enum 的 1.4.0,但 BusinessLogic 需要 1.5.0,因此在包中添加了 Enum >= 1.5.0 的依赖关系,但 Enum 中根本没有依赖关系,我认为它假设 Common 会实现它。

这是设计使然吗?

【问题讨论】:

    标签: nuget nuget-package


    【解决方案1】:

    我同意你的观点,当前的行为是不正确的。 nuget 尝试优化依赖项以将它们保持在最小集合,但没有考虑版本不同的这种情况。

    能否请您在http://nuget.codeplex.com/ 上提交一个错误,以便它显示在雷达上?

    作为目前的解决方法,您应该能够在用于构建 BusinessLogic 包的配套 .nuspec 文件中显式添加依赖项。

    【讨论】:

    • 即使在使用 .nuspec 文件时我也遇到了同样的问题。我使用 NuGet 1.4.20615.182。有没有其他方法可以解决这个问题?
    猜你喜欢
    • 2012-04-05
    • 1970-01-01
    • 2016-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多