我正在使用Jenkins的“版本号插件”为构建版本设置环境变量。这在jenkins中工作正常,但我需要一种方法将此传递给MSBuild,以便更新exe和dll的版本号。我试过配置波纹管,但它不会更新该版本的版本在MSBuild步骤中使用Jenkins版本环境变量
10
A
回答
5
环境变量名应该写不百分比痕迹(“%”),这样:
VERSION
除此之外,我觉得你很好走。
也可以考虑改变
${BUILDS_ALL_TIME}
到
${BUILDS_ALL_TIME, XX}
(这将强制两位数集结号带前导零)
2
这是一个的MSBuild目标,它取代了修订在文件GlobalAssemblyInfo.cs中使用Jenkins的SVN_REVISION变量编号。
我们有一个多项目解决方案,其中每个项目引用相同的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>
1
我发现最简单的方法是使用Change Assembly Version。使用该插件只需提供版本号(或使用的环境变量),并将其替换为工作区中的所有AssemblyInfo.cs文件。
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}
相关问题
- 1. 如何设置MSBuild扩展以在MSBuild步骤中使用Jenkins版本环境变量?
- 2. 更改Jenkins之间的环境变量构建步骤
- 3. Jenkins环境变量
- 4. 在bash脚本中使用环境变量Jenkins
- 5. Jenkins在多个构建步骤中使用变量
- 6. Jenkins管道环境变量
- 7. 如何在#中标识Python版本!使用环境变量
- 8. 访问Angular CLI中编译步骤的环境变量
- 9. jenkins中访问环境变量
- 10. Jenkins中的预配置环境变量
- 11. jenkins环境变量中没有SVN_REVISION
- 12. 如何在Jenkinsfile中使用jenkins环境变量if语句
- 13. 如何使用jenkins在gradle中声明BUILD_NUMBER环境变量?
- 14. 在Jenkins中使用声明性管道步骤在并行步骤中分配变量
- 15. MSBuild无法扩展环境变量
- 16. MSbuild不扩展环境变量
- 17. MSBuild必需的环境变量
- 18. Jenkins查看:显示环境变量
- 19. Jenkins Maven项目环境变量
- 20. Jenkins插件开发 - 环境变量
- 21. Jenkins环境变量的Android配置
- 22. Jenkins没有看到GIT环境变量
- 23. 覆盖在Jenkins本地创建的环境变量
- 24. 的MSBuild AfterBuild步骤
- 25. 使用脚本导出环境变量
- 26. 在AX中使用环境变量
- 27. 在my.ini/my.cnf中使用环境变量
- 28. 在yarn package.json中使用环境变量
- 29. 在CircleCI中使用环境变量
- 30. 使用Windows批处理命令在Jenkins中如何使用环境变量?
是的,我想通了,也似乎MSBuild.exe dosn't支持/ p:版本默认情况下。你需要解决MSBuld扩展。我最终编写了一个控制台应用程序,在构建之前更新AssemblyInfo.cs并将其传递给环境变量。这比用复杂的msbuild扩展搞定更快 –
嗯,我希望你找到一个很好的方式将版本传递给构建,因为我们还使用了一个量身定制的脚本。 – Gonen