使用正则表达式更改编译版本号

针对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;[\.,]) " />

你可能感兴趣的:(正则表达式)