DevOps Azure - передача свойств MSBuild в качестве параметров другим задачам сборки - PullRequest
0 голосов
/ 21 октября 2018

В Azure DevOps можно ли экспортировать несколько свойств MSBuild, определенных в задачах MSBuild, во время задачи сборки и использовать их в качестве переменных для других задач в задании сборки?


Использоватьcase: номер версии, вычисленный во время сборки

Мы создали задачу MSBuild, которая в составе сборки определяет номер версии из тега git.Задача MSBuild использует это для установки версий сборки, а также для возможных пакетов nuget, упакованных как часть сборки.

Теперь при настройке конвейера сборки DevOps Azure у меня есть отдельный шаг для сборки установщикадля службы (MSI с использованием Advanced Installer). Мне нужно получить версию, определенную во время задачи MSBuild, и передать ее для задачи сборки Advanced Installer , чтобы ее можно было соответствующим образом настроить.Как этого достичь?


В качестве обходного пути мы ранее использовали отдельную задачу сборки, где версия была определена с помощью скрипта bash.Затем экспортируется в переменную VSO и передается обеим задачам MSBuild и Advanced Installer build (задача MSBuild может использовать предопределенное свойство для значения версии).Теперь я хотел бы избавиться от дублирующего способа вычисления версии.

1 Ответ

0 голосов
/ 22 октября 2018

Пока вы не отключите ведение журнала консоли msbuild, вы можете использовать команды ведения журнала внутри вашего файла csproj:

<Target Name="SetAzureDevOpsVariables" BeforeTargets="BeforeBuild">
  <Message Importance="high"
           Text="##vso[task.setvariable variable=ProductVersion]$(Version)" />
</Target>

$(Version) будет заменен на msbuild сзначение свойства (вы можете использовать PackageVersion, FileVersion и т. д.), и агент будет интерпретировать команду из вывода MSBuild.Importance="high" будет гарантировать, что сообщение будет напечатано даже при уменьшении детализации журнала.

Обратите внимание, что вы также можете поместить Condition="'$(SYSTEM_TEAMPROJECTID)' != ''" в элемент <Target>, чтобы запускать этот вывод только в сборках DevOps Azure.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...