В моей системе установлены две 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?