Использование переменной среды версии Jenkins на шаге MSBuild

в настоящее время я использую плагин Jenkins "Version Number" для установки переменной среды для версии сборки. Это отлично работает в Дженкинсе, но мне нужен способ передать это MSBuild, чтобы обновить номер версии exe и dll. Я попробовал config ниже, но он не обновляет версию сборки

Version Number Config

Build Config

4 ответов


Имя Переменной Среды должно быть написано без процентные отметки ( " % " ), например:

VERSION

кроме того, я думаю, вы хорошо идти.

может также рассмотреть возможность изменения
${BUILDS_ALL_TIME}
к
${BUILDS_ALL_TIME, XX}

(Это обеспечит двухзначный номер сборки с ведущими нулями)


это цель MSBuild, которая заменяет номер редакции в файле GlobalAssemblyInfo.cs с переменной SVN_REVISION от Jenkins.

У нас есть решение для нескольких проектов, где каждый проект ссылается на один и тот же GlobalAssemblyInfo для общей информации (например, версия). Измените это, чтобы оно соответствовало вашей настройке.

при наличии условия Exists целевой объект выполняется на компьютерах разработчиков, где MSBuildCommunityTasks не установлен. В этих случаях версия номер в GlobalAssemblyInfo.cs остается нетронутым.

<Target Name="InjectSVNRevision" Condition="Exists('$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets')">
<!-- When this build is done by the Jenkins CI server; the svn revision number is set in the environment variable SVN_REVISION
     This little snippet replaces the revision number in GlobalAssemblyInfo.cs with this svn revision number
  -->
<Message Text="Injecting SVN revision number in GlobalAssemblyInfo.cs" />
<FileUpdate Files="GlobalAssemblyInfo.cs"
    Multiline="true"
    Singleline="false"
    Regex="(AssemblyVersion|AssemblyFileVersionAttribute|AssemblyFileVersion)\(&quot;([0-9]+\.[0-9]+\.[0-9]+)(\.[0-9]+)?&quot;\)"
    ReplacementText="(&quot;.$(SVN_REVISION)&quot;)" 
    Condition="$(SVN_REVISION) != '' "/>
</Target>

самый простой способ сделать это-использовать Изменить Версию Сборки. Используя этот плагин, вам нужно только указать номер версии (или используемую переменную среды), и она заменит его во всем AssemblyInfo.CS файлы в рабочей области.


очень быстрая работа с этим заключается в создании задачи powershell перед вашей задачей msbuild. Это предполагает, что вы определили переменную версии, как указано выше (без %%). И вы проверили удалить workspace перед началом сборки.

Это код для задачи powershell.

gci -rec -Filter *AssemblyInfo* | ForEach { (Get-Content $_.FullName) | ForEach-Object {$_ -replace "1.0.0.0",$env:VERSION } | Set-Content $_.FullName}