如何强制 MSBuild 版本?

How to force MSBuild version?

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

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

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

C:\Program Files (x86)\MSBuild.0

所以在他们的本地机器上他们 运行 我的构建脚本:

msbuild MyProject.HelloWorld.proj

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

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

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

msbuild /toolsversion:14.0 MyProject.HelloWorld.proj

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

我可以要求所有开发人员修改他们的环境路径变量的顺序,并将 C:\Program Files (x86)\MSBuild.0 放在顶部,然后使用 MSBuild 进行构建14,但我一直在寻找一种不那么突兀的方式来完成任务。

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

更改您的“.bat”脚本以调用特定的 msbuild.exe:

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