我目前使用的詹金斯“版本号插件”来设置环境变量的内部版本。 这工作詹金斯内正常,但我需要一种方法来此传递给这样的MSBuild版本号的exe和dll的更新的。 我试过配置波纹管,但它不会更新该版本的版本
Answer 1:
环境变量名称应写而不 %的痕迹(“%”),就像这样:
VERSION
除此之外,我认为你是好去。
也可考虑改变
${BUILDS_ALL_TIME}
至
${BUILDS_ALL_TIME, XX}
(这将强制两位数集结号带前导零)
Answer 2:
这是一个目标的MSBuild替换与从詹金斯的SVN_REVISION变量文件GlobalAssemblyInfo.cs版本号。
我们有一个多项目解决方案,其中每个项目引用的公共信息(如版本)一样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)\("([0-9]+\.[0-9]+\.[0-9]+)(\.[0-9]+)?"\)"
ReplacementText="$1("$2.$(SVN_REVISION)")"
Condition="$(SVN_REVISION) != '' "/>
</Target>
Answer 3:
从来就发现,要做到这一点,最简单的方法是使用变化大会版本 。 使用该插件你只需要提供的版本号(或者使用环境变量),它会取代它在你的工作空间中所有的AssemblyInfo.cs文件。
Answer 4:
一个非常快速的工作四处这是你的MSBuild任务之前创建一个PowerShell任务。 这是假设你定义VERSION变量如上(不%%)。 与您共建启动前检查删除工作区。
这是PowerShell的任务的代码。
gci -rec -Filter *AssemblyInfo* | ForEach { (Get-Content $_.FullName) | ForEach-Object {$_ -replace "1.0.0.0",$env:VERSION } | Set-Content $_.FullName}
文章来源: Using Jenkins Version Environment Variable in the MSBuild step