如何在TFS中设置NuGet还原以获取最高版本?

时间:2017-05-16 15:26:54

标签: tfs package nuget nuget-package nuget-package-restore

我们说我的解决方案有两个包依赖关系:

3rdParty.CompanyA.ProductA版本4.0.1 和3rdParty.CompanyB.ProductB版本2.0.1

两个包都引用其他包依赖" C" 。 第一个的依赖性设置为"高于1.2 - (> 1.2)" ,另一个设置为"高于1.8 - (> 1.8)"。

enter image description here

当我在本地编译解决方案时,一切正常并且" C" bin目录中的版本是最新的" 1.8"正如所料...... 但是当我在 TFS 中编译此解决方案并引用相同的 .Nuget \ NuGet.config 文件时,我获得了旧的1.2v" bin目录中的C" 版本,因此我的产品坏了。 是否有特殊配置通知TFS还原以获取将匹配所有依赖项的版本?

更新

我想我知道我的问题来自哪里,但我对网络非常了解。 在TFS中,我为8个项目编译和恢复包。 编译完成后,我使用"测试程序集"运行 UnitTest。步骤 我发现使用默认设置我的unittest因为它引用旧DLL而被破坏。但当我打开"并行运行"它按预期工作。

1 个答案:

答案 0 :(得分:0)

不确定是否完全明白你的观点。在我看来,这两个包应该在一些项目中。如果没有,将有两个bin文件夹,一个用于1.2,一个用于1.8。

它是Nuget Restore中的堂兄依赖概念:

  

当在相同距离处引用不同的包版本时   在应用程序的图表中,NuGet 使用最低版本   满足所有版本要求(与最低版本相同)   适用的版本和浮动版本规则)。在下图中,   例如,Package B的2.0版将满足另一个> = 1.0   约束,因此将被使用:

     

来源:How NuGet resolves package dependencies

enter image description here

它还使用NuGet.exe int TFS NuGet还原任务。不应该有任何其他设置或参数。建议您在TFS中启用调试模型,并查看更多详细日志以进行故障排除。否则,只需使用简单的解决方法更改第一个的依赖关系也设置为"高于1.8 - (> 1.8)"

更新

建议你打开"并行运行"在VS测试任务中,测试将并行运行,利用机器的可用内核。有关测试如何并行运行,请参考Parallel Test Execution在这种情况下的一个好选择。