• 自动增加项目构建或修订编号的脚本


    背景

    以前用 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"
  • 相关阅读:
    CSS实现雨滴动画效果
    大型网站架构系列:电商网站架构案例
    CSS 不定宽高的垂直水平居中方式总汇
    js中尺寸类样式
    Tiling
    排序二叉树
    算术表达式的转换
    Area
    catch that cow
    R中双表操作学习[转载]
  • 原文地址:https://www.cnblogs.com/pdfpatcher/p/1965018.html
Copyright © 2020-2023  润新知