MSBuild.exe 15.0 вызывает cl.exe и link.exe из неправильного каталога Visual Studio - PullRequest
0 голосов
/ 28 июня 2018

В моей системе установлены две Visual Studio: VS 2015 и VS 2017. Я явно запускаю msbuild из местоположения VS 2017:

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

Поскольку я вызываю msbuild из VS 2017, я ожидаю, что он также будет использовать инструменты 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 = диагностика), я вижу, что 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?

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Я пробовал параметр /p:VisualStudioVersion=15.0, но он не вступил в силу. Позже я выяснил причину такого поведения: мой файл * .vcxproj имеет тег

<PlatformToolset>v140</PlatformToolset>

Как только я изменил его на v141 , msbuild начал правильно воспринимать компилятор и компоновщик. Итак, оказалось, что msbuild в первую очередь учитывает этот параметр и только потом, вероятно, параметры командной строки или переменную PATH.

0 голосов
/ 02 июля 2018

MSBuild.exe 15.0 вызывает cl.exe и link.exe из неправильного каталога Visual Studio

Пожалуйста, попробуйте позвонить в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...