VS.NET 中递增构建号
一个快速且简单的程序(60行代码),每次构建发布版本时都会更新版本构建号。
引言
在 VS 6 中,当我们构建一个新的 *.exe 文件时,构建号会自动递增。在 VS.NET 中,我发现缺少这个功能。在这里我提交一个快速且简单的程序(60行代码),每次构建发布版本时都会更新 AssemblyInfo.cs 中的版本行。
基础
Beau Scinner 已经详细介绍了基础知识,但它仅适用于 VS 6。在 VS.NET 中,存在一个 AssemblyInfo.cs 文件,它以单行形式包含 Application.ProductVersion
的信息
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.13")]
IncBuildNo 读取此文件,将最后一个数字递增 1,然后将其写回。
调用 IncBuildNo
IncBuildNo 的第一个参数是 AssemblyInfo.cs 的**路径和文件名**。
它还可以读取第二个可选参数 Release
。如果提供了第二个参数,但如果 arg!="Release"
,IncBuildNo 将不执行任何操作。我添加此选项是为了使 IncBuildNo 能够选择 VS.NET 环境 Release
/Debug
。
如果您省略此第二个参数,或者第二个参数是 Release
,IncBuildNo 将递增版本字符串的最后一个数字(否则它将跳过递增)。
在新版本中,我添加了一些错误输出到应用程序事件日志。
安装
如果您下载上面的项目,您将获得一个完整的已安装示例。
在您自己的项目中,请执行以下步骤
- 将 IncBuildNo 复制到与 AssemblyInfo.cs 相同的目录中(通常是
$(ProductDir)
) - 在 VS.NET 中,选择 项目 -> 属性 -> 构建事件
- 在 Post-build Event CommandLine: 中插入:
"$(ProjectDir)IncBuildNo" "$(ProjectDir)AssemblyInfo.cs" $(ConfigurationName)
- 在 Run the Post-Build Event? 中选择
When build updates the project output
现在,每次构建新的发布版本时,版本的最后一个数字都会递增。
第一点注意:成功构建发布版本后,AssemblyInfo.cs 显示发布版本 +1。
第二点注意:如果您在构建应用程序时使用安装项目,可以在此安装项目的项目属性中的 postbuild 事件属性中插入一行。例如,我使用:
"$(ProjectDir)IncBuildNo" "$(ProjectDir)..\AssemblyInfo.cs" $(ConfigurationName)
注意:在这种情况下,$(ProjectDir)
指向安装项目,而不是应用程序项目。这就是上述行中 ..\
短语的原因。但是,只有在构建过程运行时才会发生递增,即您可以构建一个Release 版本而无需递增构建号。
我希望这能帮助到您。