首页 > 解决方案 > MSBuild.exe 15.0 从错误的 Visual Studio 目录调用 cl.exe 和 link.exe

问题描述

我的系统上安装了两个 Visual Studio:VS 2015 和 VS 2017。我从 VS 2017 位置显式运行 msbuild:

"C:\Program Files (x86)\Microsoft Visual Studio"\2017\WDExpress\MSBuild\15.0\Bin\amd64\msbuild.exe build/binding.sln /p:Configuration=Release;Platform=x64

由于我从 VS 2017 调用 msbuild,我希望它也能从 VS 2017 中获取工具,但它不起作用!

“正常”详细级别显示 msbuild 调用 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\cl.exe 和 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ bin\x86_amd64\link.exe,所以它从旧的 VS 2015 中获取它们是错误的。

如果我使用更详细的级别 (/clp:Verbosity=diagnostic),我会看到 msbuild 也会从错误的位置获取属性文件。消息是:

Property reassignment: $(VCInstallDir_140)="C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\" (previous value: "") at C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.Cpp.Common.props (55,5)

确实的属性文件位于 C:\Program Files (x86)\Microsoft Visual Studio\2017\WDExpress\MSBuild\15.0\Microsoft.Cpp.Common.props。

PATH 变量是正确的,并且不包含任何指向旧版 VS 2015 的内容。变量 VS140COMNTOOLS 未设置。

这是预期的行为吗?我如何告诉 msbuild 使用 VS 2017 中的工具?

标签: msbuildvisual-studio-2017

解决方案


MSBuild.exe 15.0 从错误的 Visual Studio 目录调用 cl.exe 和 link.exe

请尝试从以下位置调用 MSBuild: C:\Program Files (x86)\Microsoft Visual Studio\2017\WDExpress\MSBuild\15.0\Bin

/p:VisualStudioVersion=15.0并在命令行中添加参数,例如:

msbuild.exe build/binding.sln /p:Configuration=Release;Platform=x64 /p:VisualStudioVersion=15.0

推荐阅读