如何使GitVersion /UpdateAssemblyInfo在ASP.NET Core 2.0+Bamboo环境中生效?
解决GitVersion在ASP.NET Core 2.0项目中无法更新版本信息的问题
我之前在Bamboo上用GitVersion时也碰到过一模一样的问题——.NET Framework项目里/UpdateAssemblyInfo用得顺风顺水,到ASP.NET Core 2.0就完全没效果。后来搞清楚是两者版本配置逻辑不一样,下面给你两种可行的解决方案:
原因分析
ASP.NET Core 2.0(及后续.NET Core版本)默认不再依赖传统的AssemblyInfo.cs存储版本信息,而是把版本属性直接写在.csproj项目文件的<Version>、<AssemblyVersion>节点里。GitVersion的/UpdateAssemblyInfo参数只会扫描修改AssemblyInfo.cs,自然找不到目标,也就没法完成版本更新了。
解决方案一:让GitVersion直接更新.csproj文件
GitVersion专门针对.NET Core项目提供了更新项目文件的参数,把原来的/UpdateAssemblyInfo替换成/UpdateProjectFiles就行。这个参数会自动识别项目里的.csproj文件,修改其中的版本相关节点,保证程序集版本和Bamboo构建版本一致。
在Bamboo的GitVersion任务中,把命令参数改成:
/UpdateProjectFiles
如果需要同时兼容.NET Framework和.NET Core项目,也可以两个参数一起用:
/UpdateAssemblyInfo /UpdateProjectFiles
解决方案二:手动启用AssemblyInfo.cs并禁用自动生成
如果你更习惯用传统的AssemblyInfo.cs管理版本,可以按以下步骤操作:
- 在项目根目录创建
Properties文件夹,添加AssemblyInfo.cs文件,内容示例:using System.Reflection; [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")] - 编辑项目的
.csproj文件,添加以下配置,禁用系统自动生成AssemblyInfo的功能:<PropertyGroup> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> </PropertyGroup> - 回到Bamboo的GitVersion任务,继续使用
/UpdateAssemblyInfo参数,此时GitVersion就能正常更新你手动添加的AssemblyInfo.cs文件了。
额外注意事项
- 确保你用的GitVersion版本支持.NET Core(推荐v4.0及以上),旧版本对.NET Core项目的兼容性可能不佳。
- 构建完成后,可以检查
.csproj或AssemblyInfo.cs里的版本值,或者查看生成程序集的属性,确认版本是否和Bamboo构建版本匹配。
内容的提问来源于stack exchange,提问作者whiskytangofoxtrot
相关产品推荐
相关产品推荐

