我将NuGet 3.x中的依赖关系解析为url https://docs.microsoft.com/en-us/nuget/consume-packages/dependency-resolution#dependency-resolution-in-nuget-3x
有4条规则 1)最低适用版本 2)浮动版本 3)最近的胜利 4)堂兄依赖
第1,第3和第4我们可以在包中定义,而第2我们可以在package.json中设置
如何在nuget包上设置浮动版?
我有3个项目说ProjectA,ProjectB,ProjectC
ProjectB引用ProjectA,Project.json就像
"dependencies": {"ProjectA": "1.0.0."}
ProjectC引用ProjectB,Project.json就像
"dependencies": {"ProjectB": "1.0.0."}
nuget feed上的可用包
ProjectA.1.0.0.1
ProjectA.1.0.0.2
ProjectB.1.0.0.1
ProjectB.1.0.0.2
现在,如果我编译ProjectB
它将在bin文件夹中使用最新的ProjectA。即 ProjectA.1.0.0.2 [浮动版本规则]
它创建具有依赖项ProjectA> = 1.0.0
的ProjectB的nuget包我的要求是创建类似ProjectA = 1.0.0。*的软件包以获取最新的可用依赖项。
现在,如果我编译ProjectC
它将在bin文件夹中使用最新的ProjectB。即 ProjectB.1.0.0.2 [浮动版本规则]
它将在bin文件夹中占用最低的ProjectA。即 ProjectA.1.0.0.1 [最低适用版本]
它创建了具有依赖项ProjectB> = 1.0.0
的ProjectC的nuget包我尝试了以下选项,它也没有为我工作
"dependencies": {"ProjectA": "[,2.0)"}
"dependencies": {"ProjectA": "(,2.0]"}
"dependencies": {"ProjectA": "(,2.0)"}
要手动解决此问题,我需要使用像nuget 2x这样的浮动版本指定project.json中的所有依赖项。
"dependencies": {"ProjectB": "1.0.0.", "ProjectA": "1.0.0." and so on.... }