ASP.NET应用版本显示问题:适配SemVer并添加构建号
解决ASP.NET应用语义化版本号显示与自动构建号问题
一、修改版本号显示代码,输出SemVer格式(1.1.0)
当前代码获取的是AssemblyVersion的四段式字符串(x.x.x.x),只需截取前三位即可实现1.1.0的显示:
@{ var assemblyVersion = GetType().Assembly.GetName().Version; // 截取主版本、次版本、修订版本,组成SemVer核心格式 var semVer = $"{assemblyVersion.Major}.{assemblyVersion.Minor}.{assemblyVersion.Build}"; }
如果需要兼容版本号为空的异常情况,可补充判断:
@{ var assemblyVersion = GetType().Assembly.GetName().Version; var semVer = assemblyVersion != null ? $"{assemblyVersion.Major}.{assemblyVersion.Minor}.{assemblyVersion.Build}" : "Unknown"; }
二、配置自动递增的构建号
根据你使用的.NET版本,配置方式略有不同:
1. .NET Framework项目
打开项目根目录下的Properties/AssemblyInfo.cs,修改AssemblyVersion属性为自动递增格式:
// 前两位固定为1.1,后两位自动递增(Build对应日期相关值,Revision对应当日构建次数) [assembly: AssemblyVersion("1.1.*")] // 可选:配置InformationalVersion,支持SemVer构建元数据格式(如1.1.0+build.1234) [assembly: AssemblyInformationalVersion("1.1.0+{buildNumber}")]
每次构建时,Build和Revision会自动生成,AssemblyVersion会变为类似1.1.456.789的格式,对应SemVer的1.1.456。
2. .NET Core/.NET 5+项目
编辑项目文件(.csproj),添加或修改以下配置:
<PropertyGroup> <!-- 固定主版本和次版本,Build自动递增 --> <Version>1.1.*</Version> <!-- 可选:配置InformationalVersion,包含构建元数据 --> <InformationalVersion>$(Version)+build.$(AssemblyVersion.Build)</InformationalVersion> </PropertyGroup>
配置后,每次构建会自动生成Build号,Version属性会变为类似1.1.456的格式,InformationalVersion则为1.1.456+build.456。
三、显示带构建元数据的完整SemVer格式
如果需要遵循SemVer规范显示带构建号的版本(如1.1.0+build.1234),可以获取AssemblyInformationalVersion属性的值:
@{ using System.Reflection; var infoVersionAttr = GetType().Assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>(); var semVerWithBuild = infoVersionAttr?.InformationalVersion ?? $"{GetType().Assembly.GetName().Version.ToString(3)}+build.unknown"; }
内容的提问来源于stack exchange,提问作者Faisal
相关产品推荐
相关产品推荐

