大量阅读后,我对如何管理Assemblyinfo.cs中保存的版本的最佳实践感到困惑。似乎有各种方法,有些似乎已经过时了。我想要的是能够设置以下内容:
1.0。$ BUILD_VERSION.0
之后,内部版本会转换为类似的内容:
1.0.142.0。
其他人怎么做?我正在使用Jenkins for CI,特别是存储在我的Git存储库中的Jenkinsfile方法。我接近使用.BAT文件的内容,但由于无法从Windows bat文件中提取环境变量以供Jenkins使用,因此碰到了墙。
答案 0 :(得分:1)
如果适合,您可以在View
注意:您必须删除assemblyinfo.cs
属性:
AssemblyFileVersion
它会自动为您创建与构建时间有关的构建号。
有关此主题的更多信息:AssemblyInfo version information asterisks
答案 1 :(得分:1)
我个人会避免使用特定于Jenkins的工具,而是依靠更通用的东西(例如环境变量),如果您切换了CI,并且可以轻松地在命令行上进行本地测试,而根本没有任何CI,它将继续工作
与其他CI一样,Jenkins当然可以设置一个包含内部版本号的环境变量。因此,您要做的就是将其输入到AssemblyInfo.cs中。如果您以编程方式搜索“ update AssemblyInfo.c更新”,则会发现无数answers。
我们使用仅msbuild的解决方案,只是指示CI在实际构建之前运行特定的msbuild文件,并使用FileUpdate任务,因为这非常简单。但是例如PowerShell脚本也可以做到这一点。它看起来类似于:
<ItemGroup>
<AsmInfoFiles Include="$(ProjectRoot)\**\AssemblyInfo.cs"/>
<ItemGroup>
<PropertyGroup>
<NewVersion>$(VersionMaj).$(VersionMin).$(VersionBuild).0</NewVersion>
<PropertyGroup>
<Target Name="UpdateVersion">
<FileUpdate Files="@(AsminfoFiles)" Encoding="utf-8"
Regex="\[assembly:\s*AssemblyVersion\(.*\)\]"
ReplacementText="[assembly: AssemblyVersion("$(NewVersion)")]"/>
</Target>
版本号由CI发布为环境变量。