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

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

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

  1. 软件版本号设置规则及示例

    一.版本号设置规则 ABC客户端 版本说明书 [版本命名规则] 如:1.0.0.0 位数 名称 描述 情景 第一位 主版本 重大修改,重写或里程碑 [里程碑] [重大更新] 第二位 次版本 显著增强. ...

  2. 【软件周刊】微软发布 Mac 版 Visual Studio,SQL Server 2016 SP1 紧跟节奏

    2019独角兽企业重金招聘Python工程师标准>>> 上周有不少关于微软的新闻,而且隔三差五就弄个大新闻.先是宣布推出针对苹果 Mac 环境的 Visual Studio for ...

  3. 软件开发者的常用工具(含Visual Studio必备插件)【未完待续】

    目录 编程工具 Visual_Assist(小番茄) Resharper ImageWatch GDB_ImageWatch qt-vsaddin-msvc2013-2.3.2 AnkhSvn-2.5 ...

  4. 【必知 - 软件版本号如何定义及使用】

    大家好,好久没见.前段时间一直在找工作,很少更新. 这不,新的工作,新的奔头,一直努力熟悉. 我们的项目简单说是一款 数藏,虽简单说,但实际可不简单.感兴趣的话,就来看看吧,进入 -> 纳灵境 ...

  5. CAD制图初学入门:CAD软件中定义视口工程实例

    有些刚开始进行CAD制图初学入门学习的小伙伴在使用国产CAD软件绘制建筑图纸的过程中,不知道如何使用浩辰CAD建筑软件的视口功能,那么CAD软件如何定义视口呢?接下来的CAD制图初学入门教程就和小编一 ...

  6. Linux完全清除防火墙策略,linux下的软件防火墙iptables——规则的查看与清除、定义默认策略,...

    linux下的软件防火墙iptables--规则的查看与清除.定义默认策略软件防火墙IPTABLES --规则在Linux下查看和清除,定义默认策略,防火墙意味着用户限制某些ip或用户对其主机的访问. ...

  7. 软件版本信息定义规则

    软件版本信息定义规则 前言: 阅读这篇文章我能学到什么?   如果你正为软件版本迭代得越来越多烦恼,或者想寻找更规范的版本定义,那么请阅读这篇文章,也许你会有启发. --如果你觉得这是一篇不错的博文, ...

  8. C语言软件版本号组成和定义

    软件版本号规范 一.软件版本号由四部分组成: 1. 主版本号 - X 2 .子版本号 - Y 3. 阶段版本号 - Z 4.日期版本号加希腊字母版本号(可选) 常用的希腊字母版本号:alpha.bet ...

  9. 软件开发版本号定义方式

    software软件版本号总结: V(Version):即版本,通常用数字表示版本号.(如:EVEREST Ultimate v4.20.1188 Beta ) Build: 用数字或日期标示版本号的 ...

  10. 带你了解软件版本号的命名规则

    1. 常见软件的版本号命名 软件 升级过程 说明 Linux Kernel 0.0.1 / 1.0.0 / 2.6.32 / 3.0.18 /- 若用 X.Y.Z 表示,则偶数 Y 表示稳定版本,奇数 ...

最新文章

  1. MySQL之check、optimize和analyze
  2. php xss速查表,2020跨站脚本[xss]速查表 xss cheat sheet
  3. 关于最小化的另辟蹊径
  4. svn提交报e200007错误
  5. 人脸识别代码_10行代码实现人脸识别
  6. ios 地图黑屏_ios – 导航控制器显示黑屏
  7. 【数据结构系列】严蔚敏C语言版算法实现并附带详细注释(逐步更新)
  8. 微信小程序毕业设计 基于微信景区景点旅游攻略小程序系统开题报告
  9. boobooke大牛小牛们的视频教程
  10. 码无止境(1)——一个科研项目立项时的小程序(字典嵌套列表)
  11. python入门部分基础知识(下)
  12. C++, RAII, and the GSL Refresher
  13. 如何压缩视频大小?详细操作步骤
  14. 学校生均计算机台数统计表,学校计算机数量名称、型号、数量、发布情况统计表...
  15. hdu 4826 Labyrinth
  16. oracle共几条当前几条,Oracle 以某字段分组,以某字段排序,取前几条
  17. 武汉大学 计算机学院 曹瑀,武大计算机青协
  18. 厦门商标注册网商标产权关系
  19. “中国制造”闪耀新加坡航展
  20. 刘强东:B2C电商本质在于娇惯消费者

热门文章

  1. 微信小程序中slider实现拾色器功能
  2. 【机器学习】 - 决策树(西瓜数据集)
  3. 联想x3850x6从u盘引导_联想笔记本bios设置u盘启动教程
  4. java新手代码翻译成中文_急!老师让我把以下代码翻译成中文的
  5. 8086CPU(汇编语言,王爽)
  6. 阿铭Linux_网站维护学习笔记20190416
  7. NCRE一到四级的刷题软件
  8. Berland Poker
  9. CV之FR:基于某AI公司的API接口基于人脸识别实现计算人脸相似度(计算两张人脸图片相似度进而判断否为同一个人)—利用人工智能算法判断相似度极高的国内外明星案例应用
  10. 12-ubuntu:010 Editor