自动增加项目构建或修订编号的脚本
2011-02-25 16:31
323 查看
背景
以前用 NANT 构建项目时,有个自动递增修订编号(Revision)的功能。现在转用 Visual C# 了,虽然可以用“[assembly: AssemblyVersion("1.0.0.*")]”的形式让编号自动递增,但递增数很大,而且不是从1开始。于是就写了个脚本,让修订编号(或构建编号)从现有的值开始,每次递增1。原理
用脚本查找 AssemblyInfo.cs 里面 AssemblyVersion,修改相应的编号。每次生成时调用此脚本,则可自动递增构建或修订编号。
脚本代码
var n = WScript.Arguments(0); // AssemblyInfo 文件名 var c = WScript.Arguments.length > 1 ? WScript.Arguments(1) : ""; // 生成配置 var s = new ActiveXObject("ADODB.Stream"); s.Open(); s.Type = 2; s.CharSet = "UTF-8"; //注意这个编码不用弄错,否则文件会被损坏。Visual Studio默认使用 UTF-8保存包含中文的代码文件 s.LoadFromFile (n); var t = s.ReadText (); var r = /\[assembly: AssemblyVersion \("(\d+\.\d+\.)(\d+)\.(\d+)"\)\]/g; var a = r.exec(t); if (a != null && a.length > 1) { var m = a[1]; // Major.Minor. var b = parseInt(a[2]); // Build var rv = parseInt(a[3]); // Revision if (c != "Release") { //根据构建配置修改编号 rv++; } else { b++; } var v = "[assembly: AssemblyVersion (\""+m+b+"."+rv+"\")]"; WScript.StdOut.WriteLine ("更改程序集版本: " + a[0] + "->" + v); s.Position = 0; s.WriteText (t.replace(r, v)); s.SaveToFile (n, 2); } else { WScript.StdErr.WriteLine ("错误: 找不到 AssemblyVersion 属性。"); }
使用方法
将上述代码保存为“AutoIncrementBuildNumber.js”,放在解决方案的目录。在工程的预生成事件或生成后事件中,添加一行代码:
CScript.exe "$(SolutionDir)AutoIncrementBuildNumber.js" "$(SolutionDir)Properties\AssemblyInfo.cs" "$(ConfigurationName)"
每次 Debug 生成,修订编号增加1;每次 Release 生成,构建编号增加1。
如使用下面的代码,则只修改修订编号:
CScript.exe "$(SolutionDir)AutoIncrementBuildNumber.js" "$(SolutionDir)Properties\AssemblyInfo.cs"
如只希望在 Release 生成时才修改编号,可在命令前加条件,如:
if /I "$(ConfigurationName)" == "Release" CScript.exe "$(SolutionDir)AutoIncrementBuildNumber.js" "$(SolutionDir)Properties\AssemblyInfo.cs"
相关文章推荐
- [问题]DotNet 项目如何实现在构建时 Build 号自动增加?
- 利用ant脚本 自动构建svn全量/增量/减量 项目升级包
- shell脚本,用于自动构建xcode项目
- 用Ant实现Java项目的自动构建和部署
- 使用jenkins进行项目的自动构建部署
- 阿里云 持续集成环境自动部署cordova项目热更新脚本
- 在MyEclipse的web项目/java项目中,使用Hibernate-tools中的hbm2java和hbm2ddl工具,根据hbm文件自动生成pojo和数据库脚本
- 为什么项目符号自动编号到了10之后,文字和编号离这么远
- 怎样在Access和MS Sql Server中使一列字段自动编号增加(如 id int 主键 这一列自动增加)
- Ant详解(用Ant实现Java项目的自动构建和部署)
- SQL查询时增加自动编号
- Cocos2d-x 3.0开发(二)使用自动脚本创建cocos2d-x 3.0项目
- 利用Ant实现项目自动构建测试备份并发布到项目web(4)
- 设置iOS项目Version Build版本号自动增加
- 用Ant实现Java项目的自动构建和部署
- [置顶] 批处理脚本开机自动更新指定svn项目
- Ant实现Java项目的自动构建和部署
- 使用create-react-app自动构建react项目
- 用Python脚本自动删除VC项目目录下临时文件
- ant实现java项目的自动构建和部署