我的公司现在正在使用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文件中显式添加依赖项。