我有一个用于构建项目的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构建,因此根据项目,他们可能需要移动路径变量的顺序,这是我试图避免的。
答案 0 :(得分:2)
更改你的`.bat&#39;用于调用特定msbuild.exe的脚本:
"C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe" MyProject.HelloWorld.proj