2017-02-01 72 views
1

我有一个建立一个项目的MSBUILD脚本(.bat文件)。我需要MSBuild脚本,它将在本地执行(在提交回执之前),以便在与我们的构建管理和持续集成服务器相匹配的特定版本的MSBuild上运行。 的问题是,所有的当地开发商箱当前已安装:如何强制MSBuild版本?

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

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

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

所以在本地箱他们跑我的构建脚本:

msbuild MyProject.HelloWorld.proj 

问题是它与MSBuild建立在一起版本在Windows路径环境变量中列出最高。

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

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

msbuild /toolsversion:14.0 MyProject.HelloWorld.proj 

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

我可以让所有的开发人员修改他们的环境路径变量的顺序,并将C:\ Program Files(x86)\ MSBuild \ 14.0放置在顶部,这会导致它与MSBuild 14一起构建,但我正在寻找一种不太突出的完成任务的方式。

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

+0

只需使用的完整路径,因为它们是机器上的相同。如果你想使用更好的逻辑,MSBuild有它自己的注册表键来帮助组织更多版本相关的信息。 –

+1

没有任何msbuild.exe版本属于PATH。你可以做的很少,可以阻止开发人员将其用于自己的目的,或者使用错误的开发人员命令提示符,考虑提供他们,如果.bat文件。 –

+0

@LexLi好主意。随意提交作为答案。根据我收到的其他答案,我可能会将其标记为答案。 – ConfusedDeer

回答

2

更改您的'蝙蝠”脚本来调用特定的msbuild.exe:

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