10

我目前正在使用 Jenkins“版本号插件”为构建版本设置环境变量。这在 jenkins 中运行良好,但我需要一种方法将其传递给 MSBuild,以便更新 exe 和 dll 的版本号。我尝试了下面的配置,但它没有更新构建版本

版本号配置

构建配置

4

5 回答 5

5

环境变量名称不带百分号 ('%'),如下所示:

VERSION

除此之外,我认为你很高兴。

也可以考虑
${BUILDS_ALL_TIME}
换成
${BUILDS_ALL_TIME, XX}

(这将强制执行带有前导零的两位数的内部版本号)

于 2012-09-11T14:59:07.027 回答
2

这是一个 MSBuild 目标,它将文件 GlobalAssemblyInfo.cs 中的修订号替换为来自 Jenkins 的 SVN_REVISION 变量。

我们有一个多项目解决方案,其中每个项目都引用相同的 GlobalAssemblyInfo 以获得公共信息(如版本)。修改它,使其适合您的设置。

通过存在条件,目标在未安装 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="$1(&quot;$2.$(SVN_REVISION)&quot;)" 
    Condition="$(SVN_REVISION) != '' "/>
</Target>
于 2013-02-23T21:15:52.350 回答
1

我发现最简单的方法是使用Change Assembly Version。使用该插件,您只需提供版本号(或使用的环境变量),它将在您工作区的所有 AssemblyInfo.cs 文件中替换它。

于 2015-08-12T12:34:45.557 回答
0

一个非常快速的解决方法是在您的 msbuild 任务之前创建一个 powershell 任务。这是假设您如上所述定义了 VERSION 变量(没有 %%)。并且您在构建开始之前检查了删除工作区。

这是 powershell 任务的代码。

gci -rec -Filter *AssemblyInfo* | ForEach { (Get-Content $_.FullName) | ForEach-Object {$_ -replace "1.0.0.0",$env:VERSION } | Set-Content $_.FullName}
于 2015-10-29T01:26:20.063 回答
0

这是我的摘要,使其工作所需的内容:

安装此插件:

https://plugins.jenkins.io/versionnumber/
https://plugins.jenkins.io/change-assembly-version-plugin/

确保您的 AssemblyInfo.cs 包含:

[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

设置不带“$”的版本变量名。

定义一个不错的版本号,例如:'1.1.${BUILD_NUMBER}.${SVN_REVISION}'

在此处输入图像描述

添加“更改程序集版本”-构建步骤。在“${...}”示例中输入您的变量:“${VERSION}” 在此处输入图像描述

如果您仍然遇到构建错误。检查您的项目文件和 AssemblyInfo.cs 是否存在合并冲突。

于 2021-04-08T13:59:02.650 回答