zoukankan      html  css  js  c++  java
  • 使用正则表达式更改编译版本号

    针对Visual Studio 6.0开发环境:

     

    标准情况下在【工程名】.rc”文件中写入版本号;也允许使用每次编译自动加1宏在VersionNo.h中写入版本号。在新建项目时必须选择其中一种!

    u      标准rc文件:

    FILEVERSION 1,0,0,1

    VALUE "FileVersion", "1, 0, 0, 1"

    u      标准VersionNo.h

    #define FILEVER        1,0,0,1

     

     

    针对Visual Studio .net开发环境

    托管环境:  必须建立AssemblyInfo文件,不允许修改AssemblyVersion,只修改AssemblyFileVersion

    非托管环境:Visual Studio 6.0开发环境一致,建立*.rcVersionNo.h文件

     

    u      标准AssemblyInfo.cs

    [assembly: AssemblyFileVersion("1.0.0.1")]

    u      标准AssemblyInfo.vb

    <assembly: AssemblyFileVersion("1.0.0.1")>

    标准版本号物理形式表示为用句点(/逗号)隔开的四段数字,如下面的代码示例所示。

        <major version>.<minor version>.<build number>.<revision>

        case 1: <major version>

        case 2: <major version>.<minor version>

        case 3: <major version>.<minor version>.<build number>

        case 4:  <major version>.<minor version>.<build number>.<revision>

     1             switch (verArg.Length)
     2             {
     3                 case 4:
     4                     replacement = String.Format("${{4}}{0}${{5}}{1}${{6}}{2}${{7}}{3}${{8}}", verArg);
     5                     break;
     6                 case 3:
     7                     replacement = String.Format("${{3}}{0}${{4}}{1}${{5}}{2}${{6}}", verArg);
     8                     break;
     9                 case 2:
    10                     replacement = String.Format("${{2}}{0}${{3}}{1}${{4}}", verArg);
    11                     break;
    12                 case 1:
    13                     replacement = String.Format("${{1}}{0}${{2}}", verArg);
    14                     break;
    15             }



    正则表达式替换版本号
    1 // Build a regular expression to replace the build component of the
    2                 // AssemblyVersion attribute with the specified build number.                            
    3                 rgx = new Regex(pattern);
    4                 
    5                 // Replace the build component of the AssemblyVersion attribute 
    6                 // with the specified build number.
    7                 fileContents = rgx.Replace(fileContents, replacement);



    app.config(只举了case 2和case 4的例子)
     1 <!-- 与版本号有关的文件 -->
     2     <add key="buildVerFileNum" value="5"/>
     3     <add key="buildVerFileNum1" value="VersionNo.h" /> <!-- 这时可能存在*.rc2  -->
     4     <add key="buildVerFileNum2" value=".rc" />
     5     <add key="buildVerFileNum3" value=".rc2" />
     6     <add key="buildVerFileNum4" value="AssemblyInfo.vb" />
     7     <add key="buildVerFileNum5" value="AssemblyInfo.cs" />
     8     
     9         
    10     <!-- 与上面的文件名对应的匹配模式 -->    
    11     <!-- 更改四段版本号 -->
    12     <!-- add key="pattern1" value="(?&lt;4&gt;#define\sFILEVER\s+)[0-9]+(?&lt;5&gt;[\.,])[0-9]+(?&lt;6&gt;[\.,])[0-9]+(?&lt;7&gt;[\.,])[0-9]+(?&lt;8&gt;[\r\n])"/>
    13     <add key="pattern2" value="(?&lt;4&gt;FILEVERSION\s+)[0-9]+(?&lt;5&gt;[\.,])[0-9]+(?&lt;6&gt;[\.,])[0-9]+(?&lt;7&gt;[\.,])[0-9]+(?&lt;8&gt;[\r\n])"/>
    14     <add key="pattern3" value="(?&lt;4&gt;assembly:\sAssemblyVersion\(&quot;)[0-9]+(?&lt;5&gt;[\.,])[0-9]+(?&lt;6&gt;[\.,])[0-9]+(?&lt;7&gt;[\.,])[0-9]+(?&lt;8&gt;&quot;)"/>
    15     <add key="pattern4" value="(?&lt;4&gt;assembly:\sAssemblyVersion\(&quot;)[0-9]+(?&lt;5&gt;[\.,])[0-9]+(?&lt;6&gt;[\.,])[0-9]+(?&lt;7&gt;[\.,])[0-9]+(?&lt;8&gt;&quot;)"/ -->
    16     <!-- 更改<major version>.<minor version> -->
    17     <add key="pattern1" value="(?&lt;2&gt;#define\sFILEVER\s+)[0-9]+(?&lt;3&gt;[\.,])[0-9]+(?&lt;4&gt;[\.,])"/>
    18     <add key="pattern2" value="(?&lt;2&gt;FILEVERSION\s+)[0-9]+(?&lt;3&gt;[\.,])[0-9]+(?&lt;4&gt;[\.,])"/>
    19     <add key="pattern3" value="(?&lt;2&gt;VALUE\s+&quot;FileVersion&quot;[\.,]\s*&quot;)[0-9]+(?&lt;3&gt;[\.,]\s*)[0-9]+(?&lt;4&gt;[\.,]\s*)"/>
    20     <add key="pattern4" value="(?&lt;2&gt;assembly:\sAssemblyVersion\(&quot;)[0-9]+(?&lt;3&gt;[\.,])[0-9]+(?&lt;4&gt;[\.,])"/>
    21     <add key="pattern5" value="(?&lt;2&gt;assembly:\sAssemblyVersion\(&quot;)[0-9]+(?&lt;3&gt;[\.,])[0-9]+(?&lt;4&gt;[\.,])"/>

  • 相关阅读:
    html页面特效代码大全
    ASP.NET中个文件夹功能
    A project with an Output Type of Class Library cannot be started directly
    Chapter10“I/O设备的同步和异步”之I/O设备同步操作
    c c++ 文件操作
    linux find 文件夹下查找字符串
    c c++ sizeof
    c socket编程
    c fcntl函数
    read write 返回值
  • 原文地址:https://www.cnblogs.com/linn/p/754609.html
Copyright © 2011-2022 走看看