VS软件版本号定义、规则和相关的Visual Studio插件

http://blog.csdn.net/cnhk1225/article/details/37500593

软件版本号主要标识了软件的版本,通过其可以了解软件、类库文件的当前版本,使得软件版本控制有所依据。

我们就Windows系统和.NET Framework的编号规则来看,软件版本号的定义结构一般是这样:

主版本号.子版本号.编译版本号.修正版本号

我们也可以在项目属性上可以看到相关设置的界面,对应的英文名称分别为:major.minor.build.revision

Major:具有相同名称但不同主版本号的程序集不可互换。例如,这适用于对产品的大量重写,这些重写使得无法实现向后兼容性。当有极大的更新时,会增加major的版号。

Minor:如果两个程序集的名称和主版本号相同,而次版本号不同,这指示显著增强,但照顾到了向后兼容性。例如,这适用于产品的修正版或完全向后兼容的新版本。而当有大更新,但不至于更新major时,会更新minor的版号。

Build:内部版本号的不同表示对相同源所作的重新编译。这适合于更改处理器、平台或编译器的情况。若更新比较小,例如只是除虫(bug fixing),则会更新build的版号。

Revision:名称、主版本号和次版本号都相同但修订号不同的程序集应是完全可互换的。这适用于修复以前发布的程序集中的安全漏洞。程序集的只有内部版本号或修订号不同的后续版本被认为是先前版本的修补程序 (Hotfix) 更新。当在同一个Build下需要重新编译,那么就需要增加Revision即可。

所以一般的版本信息设置看起来应该是这样:

1
1.1
1.1.*
1.1.1
1.1.1.*
1.1.1.1

2. .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下载需要注册登录,为了方便下载我把插件放在了这里,点击下载

时间: 2024-10-14 06:39:22

VS软件版本号定义、规则和相关的Visual Studio插件的相关文章

VS版本号定义、规则和相关的Visual Studio插件

软件版本号主要标识了软件的版本,通过其可以了解软件.类库文件的当前版本,使得软件版本控制有所依据. 我们就Windows系统和.NET Framework的编号规则来看,软件版本号的定义结构一般是这样: 主版本号.子版本号.编译版本号.修正版本号 我们也可以在项目属性上可以看到相关设置的界面,对应的英文名称分别为:major.minor.build.revision Major:具有相同名称但不同主版本号的程序集不可互换.例如,这适用于对产品的大量重写,这些重写使得无法实现向后兼容性.当有极大的

软件版本号命名规则

  1.版本命名规范 软件版本号有四部分组成,第一部分为主版本号,第二部分为次版本号,第三部分为修订版 本号,第四部分为日期版本号加希腊字母版本号,希腊字母版本号共有五种,分别为base.alpha.beta .RC . release   2.软件版本阶段说明 Base:此版本表示该软件仅仅是一个假页面链接,通常包括所有的功能和页面布局,但是    页面中的功能都没有做完整的实现,只是做为整体网站的一个基础架构. Alpha :软件的初级版本,表示该软件在此阶段以实现软件功能为主,通常只在软件

项目管理 软件版本号的命名格式和规则

最近公司发布测试版,涉及软件的版本号管理,发现不同公司的版本号管理的方法都不一样,各有千秋.在这里展示个人认为还不 错的版本号管理的方法. [1]版本命名规范 软件版本号有四部分组成: 第一部分为主版本号, 第二部分为次版本号, 第三部分为修订版本号, 第四部分为日期版本号加希腊字母版本号,希腊字母版本号共有五种,分别为base.alpha.beta .RC . release. [2]软件版本阶段说明 Base:  此版本表示该软件仅仅是一个假页面链接,通常包括所有的功能和页面布局,但是页面中

软件版本号

版本控制比较普遍的 3 种命名格式 : 一.GNU 风格的版本号命名格式 : 主版本号 . 子版本号 [. 修正版本号 [. 编译版本号 ]] Major_Version_Number.Minor_Version_Number[.Revision_Number[.Build_Number]] 示例 : 1.2.1, 2.0, 5.0.0 build-13124 二.Windows 风格的版本号命名格式 : 主版本号 . 子版本号 [ 修正版本号 [. 编译版本号 ]] Major_Version

软件版本号规范与命名原则

1. 软件版本阶段说明 * Alpha版: 此版本表示该软件在此阶段主要是以实现软件功能为主,通常只在软件开发者内部交流,一般而言,该版本软件的Bug较多,需要继续修改.* Beta版: 该版本相对于α版已有了很大的改进,消除了严重的错误,但还是存在着一些缺陷,需要经过多次测试来进一步消除,此版本主要的修改对像是软件的UI.* RC版: 该版本已经相当成熟了,基本上不存在导致错误的BUG,与即将发行的正式版相差无几.* Release版: 该版本意味“最终版本”,在前面版本的一系列测试版之后,终

[转]软件版本号扫盲——Beta RC Preview release等

1.软件版本阶段说明 *Alpha版:此版本表示该软件在此阶段主要是以实现软件功能为主,通常只在软件开发者内部交流,一般而言,该版本软件的Bug较多,需要继续修改. *Beta版:该版本相对于α版已有了很大的改进,消除了严重的错误,但还是存在着一些缺陷,需要经过多次测试来进一步消除,此版本主要的修改对像是软件的UI. *RC版:该版本已经相当成熟了,基本上不存在导致错误的BUG,与即将发行的正式版相差无几. *Release版:该版本意味“最终版本”,在前面版本的一系列测试版之后,终归会有一个正

软件版本号规范

原文: https://blog.csdn.net/master_yao/article/details/51274163 1.  软件版本阶段说明 o    Base版: 此版本表示该软件仅仅是一个假页面链接,通常包括所有的功能和页面布局,但是页面中的功能都没有做完整的实现,只是做为整体网站的一个基础架构. o    Alpha版: 此版本表示该软件在此阶段主要是以实现软件功能为主,通常只在软件开发者内部交流,一般而言,该版本软件的Bug较多,需要继续修改. o    Beta版: 该版本相对

App版本号定义与说明基础知识

版本控制比较普遍的三种命名格式 GNU 风格的版本号命名格式 主版本号 . 次版本号 [. 修正版本号 [. 编译版本号 ]] 示例 : 1.2.1, 2.0, 5.0.0 build-13124 Windows 风格的版本号命名格式 : 主版本号 . 次版本号 [ 修正版本号 [. 编译版本号 ]] 示例: 1.21, 2.0 Net Framework 风格的版本号命名格式: 主版本号.次版本号[.编译版本号[.修正版本号]] 版本号由二至四个部分组成:主版本号.次版本号.内部版本号和修订号

SELinux的策略与规则管理相关命令seinfo、sesearch、getsebool、setsebool、semanage

SELinux的策略与规则管理相关命令:seinfo命令.sesearch命令.getsebool命令.setsebool命令.semanage命令. seinfo 命令 seinfo命令是用来查询SELinux的策略提供多少相关规则,一个主体进程能否读取到目标文件资源的重点是在于SELinux的策略以及策略内的各项规则,然后再通过该规则的定义去处理各项目标文件的安全上下文,尤其是"类型"部分. -A:列出SELinux的状态.规则布尔值.身份识别.角色.类型等所有信息. -t:列出S