我有一个建立一个项目的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构建,因此根据项目的不同,他们可能需要移动路径变量的顺序,我试图避免这种情况。
只需使用的完整路径,因为它们是机器上的相同。如果你想使用更好的逻辑,MSBuild有它自己的注册表键来帮助组织更多版本相关的信息。 –
没有任何msbuild.exe版本属于PATH。你可以做的很少,可以阻止开发人员将其用于自己的目的,或者使用错误的开发人员命令提示符,考虑提供他们,如果.bat文件。 –
@LexLi好主意。随意提交作为答案。根据我收到的其他答案,我可能会将其标记为答案。 – ConfusedDeer