软件版本号定义、自动编号和相关的Visual Studio插件

发布时间:2026/8/3 19:10:14
软件版本号定义、自动编号和相关的Visual Studio插件 前两篇文章在编译配置和ClickOnce发布Winform的时候都遇到了软件版本号的设置这篇文章就来说说软件版本号的设置原则。1. 软件版本号的定义软件版本号主要标识了软件的版本通过其可以了解软件、类库文件的当前版本使得软件版本控制有所依据。我们就Windows系统和.NET Framework的编号规则来看软件版本号的定义结构一般是这样主版本号.子版本号.编译版本号.修正版本号我们也可以在项目属性上可以看到相关设置的界面对应的英文名称分别为major.minor.build.revisionMajor具有相同名称但不同主版本号的程序集不可互换。例如这适用于对产品的大量重写这些重写使得无法实现向后兼容性。当有极大的更新时会增加major的版号。Minor如果两个程序集的名称和主版本号相同而次版本号不同这指示显著增强但照顾到了向后兼容性。例如这适用于产品的修正版或完全向后兼容的新版本。而当有大更新但不至于更新major时会更新minor的版号。Build内部版本号的不同表示对相同源所作的重新编译。这适合于更改处理器、平台或编译器的情况。若更新比较小例如只是除虫bug fixing则会更新build的版号。Revision名称、主版本号和次版本号都相同但修订号不同的程序集应是完全可互换的。这适用于修复以前发布的程序集中的安全漏洞。程序集的只有内部版本号或修订号不同的后续版本被认为是先前版本的修补程序 (Hotfix) 更新。当在同一个Build下需要重新编译那么就需要增加Revision即可。所以一般的版本信息设置看起来应该是这样11.11.1.*1.1.11.1.1.*1.1.1.12. .NET里自动编号的方法在设置页面里有一个是程序集版本号一个是文件版本号。文件版本号主要用来为文件做标识而程序集版本号用于CLR识别使用。在我们确定了主版本号和子版本号后编译版本号和修正版本号就需要在每次编译的时候去变动了这样在程序测试、排错时才能快速定位到使用的是哪个编译出的版本而不仅仅是通过文件创建时间去辨别。在.NET里面提供了一个方法去自动对编译版本号和修正版本号进行设置的方法。首先我们需要知道通过界面设置的版本信息是存储在项目里的AssemblyInfo.cs文件里的。默认的设置是这样。1[assembly: AssemblyVersion(1.0.0.0)]2[assembly: AssemblyFileVersion(1.0.0.0)]我们需要将主版本号和子版本号填写好因为这部分是不会频繁变动的而编译版本使用通配符*代替并将文件版本信息注释掉设置起来像这样。1[assembly: AssemblyVersion(1.0.*)]2//[assembly: AssemblyFileVersion(1.0.0.0)]这样设置后生成的规则就是编译版本号是自2000年2月1日以来的天数而修正版本号会是自午夜零点以来的秒数除以2所得的值。我们看一个编译后的结果。3. 相关的Visual Studio插件上面.NET提供自动编号的方法在解决方案里有很多项目且想统一管理其版本号时就不能满足需求了要保持统一就要每次编译前手动统一所有的版本信息了。还好我们找到了一个插件Versioning Controlled Build 这里是作者的CodeProject上面的主页里面有项目和使用方法的介绍。在这里面可以统一管理解决方案里面的所有项目可以按照自己的项目统一修改对应的版本号。而在插件设置里面还提供了更多的选项已满足不同的自动编号需求。更多的功能各位可以按照自己的需求去摸索与配置了。因为CodeProject下载需要注册登录为了方便下载我把插件放在了这里点击下载。