День добрый!
Стоит тимсити 2017.1.2 (build 46812). На билдагенте установлены и VS 2017, и VS 2017 build tools, сборка выполняется как ms build step.
В настройках build step в tools version доступны только различные build tools, студия в списке отсутствует.
Собственно вопрос: можно ли настроить сборку так, чтобы использовалась версия ms build, которая поставляется в составе студии (окружение совпадало с Developer Command Prompt for VS 2017)?
Нужно как минимум для сборки ssdt и azure projects. VS 2017 build tools их не поддерживает.
Здравствуйте, Sinix, Вы писали:
S>День добрый!
S>Стоит тимсити 2017.1.2 (build 46812). На билдагенте установлены и VS 2017, и VS 2017 build tools, сборка выполняется как ms build step.
S>В настройках build step в tools version доступны только различные build tools, студия в списке отсутствует.
S>Собственно вопрос: можно ли настроить сборку так, чтобы использовалась версия ms build, которая поставляется в составе студии (окружение совпадало с Developer Command Prompt for VS 2017)?
S>Нужно как минимум для сборки ssdt и azure projects. VS 2017 build tools их не поддерживает.
Добрый день,
Для использования VS 2017 и Build Tools в MSBuild шаге нужно выбрать MSBuild version "Microsoft Build Tools 2017" и MSBuild ToolsVersion "15.0".
Чтобы при этом получить тот же самый environment что и в Developer Command Prompt нужно перед MSBuild шагом добавить Command Line шаг в котором сначала вызывается нужный bat файл, задающий environment, а затем выполнить его capture для последующих шагов:
"%VS2017_Path%\..\Tools\VsDevCmd.bat"
%env.TEAMCITY_CAPTURE_ENV%
Здравствуйте, dtretyakov, Вы писали:
D>Чтобы при этом получить тот же самый environment что и в Developer Command Prompt нужно перед MSBuild шагом добавить Command Line шаг в котором сначала вызывается нужный bat файл, задающий environment, а затем выполнить его capture для последующих шагов:
D>"%VS2017_Path%\..\Tools\VsDevCmd.bat"
D>%env.TEAMCITY_CAPTURE_ENV%
Спасиб! Помогло, но не до конца. В логе сборки:
Starting: E:\BuildAgent\plugins\dotnetPlugin\bin\JetBrains.BuildServer.MsBuildBootstrap.exe
/workdir:E:\BuildAgent\work\f0fe40554766ab39
/msbuildPath:C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\bin\MSBuild.exe
msbuildPath должен на msbuild из состава студии указывать. Что-то типа
C:\Program Files (x86)\Microsoft Visual Studio\2017\%edition%\MSBuild\15.0\Bin\MSBuild.exe
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, dtretyakov, Вы писали:
D>>Чтобы при этом получить тот же самый environment что и в Developer Command Prompt нужно перед MSBuild шагом добавить Command Line шаг в котором сначала вызывается нужный bat файл, задающий environment, а затем выполнить его capture для последующих шагов:
D>>"%VS2017_Path%\..\Tools\VsDevCmd.bat"
D>>%env.TEAMCITY_CAPTURE_ENV%
S>Спасиб! Помогло, но не до конца. В логе сборки:
S>S>Starting: E:\BuildAgent\plugins\dotnetPlugin\bin\JetBrains.BuildServer.MsBuildBootstrap.exe
S> /workdir:E:\BuildAgent\work\f0fe40554766ab39
S> /msbuildPath:C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\bin\MSBuild.exe
S>
S>msbuildPath должен на msbuild из состава студии указывать. Что-то типа
S>S>C:\Program Files (x86)\Microsoft Visual Studio\2017\%edition%\MSBuild\15.0\Bin\MSBuild.exe
S>
На TeamCity агенте при старте выбирается та версия MSBuild, которая имеет наибольший номер сборки в рамках major номера версии (15.хх.хх). Если на этой машине отдельно установлены Build Tools от VS 2017, то они также могут задетектиться на этом агенте. Это можно проверить на вкладке агента в Agent Parameters -> Configuration Parameters как значение параметра MSBuildTools15.0_x86_Path.
Если это так и на этой машине установлены side by side Visual Studio 2017 и Build Tools 2017, то как workaround можно:
* Удалить Build Tools 2017 и перезапустить TeamCity агента
* Использовать Visual Studio (sln) build step
* Использовать Command line build step, в котором выполнить "%VS2017_Path%\..\..\MSBuild\15.0\bin\MSBuild.exe" ...