You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 03:05:15