如何强制MSBuild版本?

时间:2017-02-01 15:21:55

标签: .net msbuild msbuild-4.0

我有一个用于构建项目的MSBUILD脚本(.bat文件)。我需要将在本地执行的MSBuild脚本(在提交到repo之前)在与我们的构建管理和持续集成服务器匹配的特定版本的MSBuild上运行。 问题是当前已安装所有本地开发人员框:

List<KilometerTempo> kmTempos = new List<KilometerTempo>(); foreach (MeterTempo mt in meterTempos) { double rDistance = mt.distance; // remaining distance to add while (rDistance > 0) { if (kmTempos.Count == 0 || kmTempos.Last().distance == 1000f) { kmTempos.Add(new KilometerTempo()); kmTempos.Last().km = kmTempos.Count; } // determine max distance we can add to the last km tempo double maxAddedDistance = 1000f - kmTempos.Last().distance; // determine how much we will add double addedDistance = rDistance < maxAddedDistance ? rDistance : maxAddedDistance; kmTempos.Last().distance += addedDistance; // add seconds proportional to the added distance kmTempos.Last().seconds += (addedDistance / mt.distance) * mt.seconds; rDistance -= addedDistance; } }

C:\Windows\Microsoft.NET\Framework\v3.5

C:\Windows\Microsoft.NET\Framework\v4.0.30319

因此,在他们的本地方框中,他们运行我的构建脚本:

C:\Program Files (x86)\MSBuild\14.0

问题是它使用在Windows路径环境变量中列出的最高MSBuild版本构建。

我可以告诉构建日志使用了哪个版本的MSBuild。

我尝试通过修改脚本来传递Toolsversion参数来指定tools version

msbuild MyProject.HelloWorld.proj

但无济于事,该项目是使用MSBuild 4.0版构建的。

我可以要求所有开发人员修改其环境路径变量的顺序,并将C:\ Program Files(x86)\ MSBuild \ 14.0放在顶部,这样就可以使用MSBuild 14构建它,但我是寻找一种不那么突兀的方式来完成任务。

此外,还有其他项目需要使用旧版本的MSBuild构建,因此根据项目,他们可能需要移动路径变量的顺序,这是我试图避免的。

1 个答案:

答案 0 :(得分:2)

更改你的`.bat&#39;用于调用特定msbuild.exe的脚本:

"C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe" MyProject.HelloWorld.proj