4

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

我有一种情况,nuget 没有像我预期的那样工作。

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

  • 枚举
  • 常见的
  • 商业逻辑

在包装参考方面...

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

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

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

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

  • 枚举 = 1.4.0
  • 常见 = 1.2.1
  • 业务逻辑 = 2.0.1

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

  • 枚举 = 1.5.0
  • 常见 = 1.2.1
  • 业务逻辑 = 2.0.1

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

  • 枚举 = 1.5.0
  • 常见 = 1.2.1
  • 业务逻辑 = 2.1.0

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

  • 通用 => 枚举 1.4.0
  • 业务逻辑 => 枚举 1.5.0

现在我跑...

nuget pack BusinessLogic.csproj

我期望发生的是 nuget 会看到 Common 需要 Enum 的 1.4.0,但 BusinessLogic 需要 1.5.0,因此在包中添加了对Enum >= 1.5.0.会实现它。

这种行为是设计使然吗?

4

1 回答 1

1

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

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

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

于 2011-07-19T18:11:01.523 回答