msbuild - 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 中的工具?
解决方案
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
推荐阅读
- javascript - 如何使用 Javascript 或 PHP 在数组中的两个日期之间添加日期?
- javascript - 有没有办法根据盒子里剩下的空间来显示按钮
- java - 仅在线程 1 完成后执行线程 2
- java - 如何在 Android 上使用 libgdx 实现 RewardedVideo 广告?
- c++ - 如何用 char 获得多个输入,用 int 获得多个输出?C++
- e-commerce - 打开电子商务跟踪的问题
- file - 以固定大小的块读取二进制文件并将所有这些块存储到 Vec 中的正确方法是什么?
- python - 如何替换 JSON 列表以打印到 CSV?
- reactjs - ReactiveSearch:是否可以在 SingleDataList 组件上组合标签值?
- c++ - 在 c++ 中使用用户输入初始化数组大小的不同方法有哪些