Установите VersionSuffix, чтобы зафиксировать идентификатор, если доступно - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь установить суффикс версии в моих DLL на Git идентификатор фиксации, доступный в Azure DevOps через переменную окружения Build_SourceVersion. Если эта переменная среды недоступна, суффикс должен быть установлен на случайный GUID. Мой Directory.Build.props файл выглядит следующим образом:

<Project>
 <PropertyGroup>
   <VersionPrefix>2.1.0</VersionPrefix>
    <VersionSuffix Condition="'$(Test-Path env:Build_SourceVersion)' == 'True'">$((Get-Variable Build_SourceVersion).Substring(0, 7))</VersionSuffix>
    <VersionSuffix Condition="'$(Test-Path env:Build_SourceVersion)' == 'False'">$([System.Guid]::NewGuid().ToString(N).ToLower().Substring(0, 7))</VersionSuffix>
 </PropertyGroup>
</Project>

Хотя при сборке мои DLL не получают установленную версию продукта. Что я здесь не так делаю? Если я пытаюсь установить <VersionSuffix> на $([System.Guid]::NewGuid().ToString(N).ToLower().Substring(0, 7)), мои библиотеки DLL помечаются случайным GUID. Если я попытаюсь $((Get-Variable Build_SourceVersion).Substring(0, 7)), я, по крайней мере, не получу никаких ошибок, но комбинация, кажется, не работает.

1 Ответ

0 голосов
/ 03 марта 2020

Установите для VersionSuffix идентификатор фиксации, если имеется

Если вы хотите сослаться на Azure devops для построения переменных из MSBuild, вам нужно сослаться на переменную среды, которую устанавливает агент.

Таким образом, вы можете использовать его в MSBuild, используя $(Build_SourceVersion) вместо (Get-Variable Build_SourceVersion).

Тогда мы могли бы использовать следующие сценарии, чтобы получить Substring этого значения:

  <PropertyGroup>
    <VersionSuffixTest>$(Build_SourceVersion)</VersionSuffixTest>
  </PropertyGroup>

  <PropertyGroup>
    <VersionPrefix>2.1.0</VersionPrefix>
    <VersionSuffix Condition="'$(VersionSuffixTest)' != ''">$(VersionSuffixTest.Substring(0, 7))</VersionSuffix>
  </PropertyGroup>

В качестве теста я использую целевой вывод MSBuild со следующим значением:

<Target Name="TestTask" AfterTargets="Build">
  <Message Text="$(VersionPrefix)" Importance="high" />
  <Message Text="$(VersionSuffix)" Importance="high" />
</Target>

Затем я могу получить это значение:

enter image description here

Проверьте эту тему и эту тему для некоторых деталей.

Надеюсь, это поможет.

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