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

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

我有3个共享程序集。


枚举
共同
商业逻辑


关于包引用...


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


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

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

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


枚举= 1.4.0
共同= 1.2.1
BusinessLogic = 2.0.1


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


枚举= 1.5.0
共同= 1.2.1
BusinessLogic = 2.0.1


现在,我对BusinessLogic,commit,push,package等进行更改。


枚举= 1.5.0
共同= 1.2.1
BusinessLogic = 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尝试优化依赖关系以将它们保持在最小限度,但是没有考虑版本不同的情况。

您能否在http://nuget.codeplex.com/上提交错误,使其显示在雷达上?

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

09-07 03:29