【问题标题】:How to force MSBuild version?如何强制 MSBuild 版本?
【发布时间】:2017-02-01 15:21:55
【问题描述】:

我有一个构建项目的 MSBUILD 脚本(.bat 文件)。我需要将在本地执行的 MSBuild 脚本(在提交到 repo 之前)在与我们的构建管理和持续集成服务器匹配的特定版本的 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

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

我可以知道我们的构建日志使用了哪个版本的 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 好主意。随时提交作为答案。我可能会根据收到的其他答案将其标记为答案。
  • @HansPassant 该脚本当前确实是一个.bat,这如何使上述具体情况变得更好?
  • 键入您要运行的 .exe 文件的全名,这样您就不必依赖 PATH。

标签: .net msbuild msbuild-4.0


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多