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

.NET 4.8下ASP.NET WebForms应用如何添加自动递增版本号?

为ASP.NET Web Forms应用配置发布时自动递增版本号

下面介绍几种实用方法,实现每次发布时自动递增版本号(非源代码版本控制范畴):


方法1:用AssemblyInfo.cs通配符快速实现自动递增

Web Forms项目的Properties/AssemblyInfo.cs是控制程序集版本的核心文件,默认版本为固定值:

[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

把修订号/构建号改成*,就能让版本在每次编译(发布必然触发编译)时自动递增:

// 程序集版本格式:主版本.次版本.构建号.修订号
// *会自动生成:构建号=当前日期距2000年1月1日的天数;修订号=当天秒数/2
[assembly: AssemblyVersion("1.0.*")]
// 文件版本也可以同步用通配符,或者单独指定规则
[assembly: AssemblyFileVersion("1.0.*")]

⚠️ 注意:这种方式每次编译都会递增,包括本地调试编译。如果只想在发布时递增,需要配合Release配置区分编译行为。


方法2:自定义MSBuild脚本,实现发布专属的版本递增

如果需要更精准的控制(比如只在Release发布时递增,固定主/次版本,只升修订号),可以修改项目的.csproj文件:

  1. 右键项目→选择「编辑项目文件」,打开.csproj
  2. 在<Project>节点内添加以下脚本:
<PropertyGroup>
  <!-- 自定义初始版本,按需修改主、次版本号 -->
  <MajorVersion>1</MajorVersion>
  <MinorVersion>0</MinorVersion>
  <BuildVersion>0</BuildVersion>
  <!-- 用来存储修订号的文件,先在解决方案根目录建一个RevisionNumber.txt,初始值写0 -->
  <RevisionFile>$(SolutionDir)RevisionNumber.txt</RevisionFile>
</PropertyGroup>

<Target Name="IncrementRevision" BeforeTargets="Build" Condition="'$(Configuration)' == 'Release'">
  <!-- 读取当前修订号 -->
  <ReadLinesFromFile File="$(RevisionFile)">
    <Output TaskParameter="Lines" ItemName="RevisionNumber" />
  </ReadLinesFromFile>
  <!-- 递增修订号 -->
  <PropertyGroup>
    <CurrentRevision>$([System.Int32]::Parse($(RevisionNumber)))</CurrentRevision>
    <NewRevision>$([System.Int32]::Add($(CurrentRevision), 1))</NewRevision>
  </PropertyGroup>
  <!-- 把新修订号写回文件 -->
  <WriteLinesToFile File="$(RevisionFile)" Lines="$(NewRevision)" Overwrite="true" />
  <!-- 设置最终的程序集和文件版本 -->
  <PropertyGroup>
    <AssemblyVersion>$(MajorVersion).$(MinorVersion).$(BuildVersion).$(NewRevision)</AssemblyVersion>
    <AssemblyFileVersion>$(MajorVersion).$(MinorVersion).$(BuildVersion).$(NewRevision)</AssemblyFileVersion>
  </PropertyGroup>
</Target>
  1. 确保解决方案根目录有RevisionNumber.txt文件,初始值设为0
  2. 发布时选择Release配置,这样只有发布(触发Release编译)时才会递增修订号,本地Debug编译不会受影响。

方法3:结合Visual Studio发布管道动态设置版本

如果用Visual Studio自带的发布工具(比如发布到IIS、Azure),可以通过发布配置或管道变量动态赋值版本号:

  1. 右键项目→选择「发布」,打开发布配置面板
  2. 切换到「设置」选项卡,勾选「启用预编译」
  3. 点击「配置预编译设置」,选择「所有输出文件的单个程序集」,然后在「版本」输入框中:
    • 若用Azure DevOps发布,直接用管道变量$(Build.BuildNumber)自动填充版本号
    • 本地发布的话,可以写个简单的PowerShell脚本,在发布前自动修改AssemblyInfo.cs里的版本号(比如读取上次版本,递增后替换)

验证版本是否生效

发布后可以通过两种方式确认版本号:

  1. 找到发布目录bin下的程序集(.dll文件),右键→属性→详细信息,查看「文件版本」和「产品版本」
  2. 在Web页面中添加代码显示版本:
// 在页面后台的Page_Load方法中
protected void Page_Load(object sender, EventArgs e)
{
    var assemblyVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
    lblVersion.Text = $"当前应用版本:{assemblyVersion.Major}.{assemblyVersion.Minor}.{assemblyVersion.Build}.{assemblyVersion.Revision}";
}

内容的提问来源于stack exchange,提问作者Tech with Thiru

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 15:04:54