TeamCity 2017, сборка с использованием Full VS
От: Sinix  
Дата: 03.07.17 12:42
Оценка:
День добрый!

Стоит тимсити 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 их не поддерживает.
Re: TeamCity 2017, сборка с использованием Full VS
От: dtretyakov  
Дата: 04.07.17 12:14
Оценка: 48 (1)
Здравствуйте, 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%
Re[2]: TeamCity 2017, сборка с использованием Full VS
От: Sinix  
Дата: 04.07.17 12:37
Оценка:
Здравствуйте, 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
Re[3]: TeamCity 2017, сборка с использованием Full VS
От: dtretyakov  
Дата: 05.07.17 16:04
Оценка: 48 (1)
Здравствуйте, 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" ...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.