VS.net项目自动更新版本号

VS.net项目自动更新版本号

 

方案1   通过SVN程序自动更新版本号

1,使用SVN的一个程序, 一般都会装,无需再次下载和安装了.
,2,只需要在项目属性-> 生成事件-> 后期生成事件命令 中加入

subwcrev.exe $(ProjectDir)Properties\ $(ProjectDir)Properties\AssemblyInfo.cs.tpl $(ProjectDir)Properties\AssemblyInfo.cs

3,修改AssemblyInfo.cs文件为tpl格式,并调整内容

复制AssemblyInfo.cs文件改名成 AssemblyInfo.cs.tpl
然后把里面的 :

[assembly: AssemblyVersion("1.0.0.0")]

改成这样:

[assembly: AssemblyVersion("1.0.0.$WCREV$")]

就会自动更新了 。

 

 

 

方案2   通过VS程序配置来自动更新版本号

 首先我们需要知道通过界面设置的版本信息是存储在项目里的AssemblyInfo.cs文件里的。

 默认的设置是这样:

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

 

我们需要将主版本号和子版本号填写好,因为这部分是不会频繁变动的,而编译版本使用通配符*代替,并将文件版本信息注释掉,设置起来像这样。

 [assembly: AssemblyVersion("1.0.*")]
 //[assembly: AssemblyFileVersion("1.0.0.0")] //如果需要自动增加版本号,需要注释这句代码,只用上面的一行

这样设置后生成的规则就是:编译版本号是自2000年1月1日以来的天数,而修正版本号会是当天自午夜零点以来的秒数除以2所得的值。

修改侯可能会提示:指定的版本字符串包含通配符,这与确定性不兼容。请删除版本字符串中的通配符,或禁用此编译的确定性

此时用记事本打开该项目的csproj文件,搜索Deterministic,将对应的选项由True改为False,或者直接删除该配置项即可。

<Deterministic>false</Deterministic>

完成。

 

 

 

 

基本概念

----------------------------------------------------------------------------------------------------------------------------------

项目属性上可以看到相关设置的界面,对应的英文名称分别为: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

在设置页面里有一个是程序集版本号,一个是文件版本号。文件版本号主要用来为文件做标识,而程序集版本号用于CLR识别使用。

----------------------------------------------------------------------------------------------------------------------------------

 

posted @ 2022-10-12 17:50  亟待!  阅读(406)  评论(0编辑  收藏  举报
……