使用正则表达式更改编译版本号
2007-05-21 20:21
423 查看
针对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开发环境一致,建立*.rc或VersionNo.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:
replacement = String.Format("${{2}}{0}${{3}}{1}${{4}}", verArg);
break;
case 1:
replacement = String.Format("${{1}}{0}${{2}}", verArg);
break;
}
正则表达式替换版本号
// Build a regular expression to replace the build component of the
// AssemblyVersion attribute with the specified build number.
rgx = new Regex(pattern);
// Replace the build component of the AssemblyVersion attribute
// with the specified build number.
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
<!-- 与上面的文件名对应的匹配模式 -->
<!-- 更改四段版本号 -->
<!-- add key="pattern1" value="(?<4>#define\sFILEVER\s+)[0-9]+(?<5>[\.,])[0-9]+(?<6>[\.,])[0-9]+(?<7>[\.,])[0-9]+(?<8>[\r\n])"/>
<add key="pattern2" value="(?<4>FILEVERSION\s+)[0-9]+(?<5>[\.,])[0-9]+(?<6>[\.,])[0-9]+(?<7>[\.,])[0-9]+(?<8>[\r\n])"/>
<add key="pattern3" value="(?<4>assembly:\sAssemblyVersion\(")[0-9]+(?<5>[\.,])[0-9]+(?<6>[\.,])[0-9]+(?<7>[\.,])[0-9]+(?<8>")"/>
<add key="pattern4" value="(?<4>assembly:\sAssemblyVersion\(")[0-9]+(?<5>[\.,])[0-9]+(?<6>[\.,])[0-9]+(?<7>[\.,])[0-9]+(?<8>")"/ -->
<!-- 更改<major version>.<minor version> -->
<add key="pattern1" value="(?<2>#define\sFILEVER\s+)[0-9]+(?<3>[\.,])[0-9]+(?<4>[\.,])"/>
<add key="pattern2" value="(?<2>FILEVERSION\s+)[0-9]+(?<3>[\.,])[0-9]+(?<4>[\.,])"/>
<add key="pattern3" value="(?<2>VALUE\s+"FileVersion"[\.,]\s*")[0-9]+(?<3>[\.,]\s*)[0-9]+(?<4>[\.,]\s*)"/>
<add key="pattern4" value="(?<2>assembly:\sAssemblyVersion\(")[0-9]+(?<3>[\.,])[0-9]+(?<4>[\.,])"/>
<add key="pattern5" value="(?<2>assembly:\sAssemblyVersion\(")[0-9]+(?<3>[\.,])[0-9]+(?<4>[\.,])"/>
标准情况下在“【工程名】.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开发环境一致,建立*.rc或VersionNo.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:
replacement = String.Format("${{2}}{0}${{3}}{1}${{4}}", verArg);
break;
case 1:
replacement = String.Format("${{1}}{0}${{2}}", verArg);
break;
}
正则表达式替换版本号
// Build a regular expression to replace the build component of the
// AssemblyVersion attribute with the specified build number.
rgx = new Regex(pattern);
// Replace the build component of the AssemblyVersion attribute
// with the specified build number.
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
<!-- 与上面的文件名对应的匹配模式 -->
<!-- 更改四段版本号 -->
<!-- add key="pattern1" value="(?<4>#define\sFILEVER\s+)[0-9]+(?<5>[\.,])[0-9]+(?<6>[\.,])[0-9]+(?<7>[\.,])[0-9]+(?<8>[\r\n])"/>
<add key="pattern2" value="(?<4>FILEVERSION\s+)[0-9]+(?<5>[\.,])[0-9]+(?<6>[\.,])[0-9]+(?<7>[\.,])[0-9]+(?<8>[\r\n])"/>
<add key="pattern3" value="(?<4>assembly:\sAssemblyVersion\(")[0-9]+(?<5>[\.,])[0-9]+(?<6>[\.,])[0-9]+(?<7>[\.,])[0-9]+(?<8>")"/>
<add key="pattern4" value="(?<4>assembly:\sAssemblyVersion\(")[0-9]+(?<5>[\.,])[0-9]+(?<6>[\.,])[0-9]+(?<7>[\.,])[0-9]+(?<8>")"/ -->
<!-- 更改<major version>.<minor version> -->
<add key="pattern1" value="(?<2>#define\sFILEVER\s+)[0-9]+(?<3>[\.,])[0-9]+(?<4>[\.,])"/>
<add key="pattern2" value="(?<2>FILEVERSION\s+)[0-9]+(?<3>[\.,])[0-9]+(?<4>[\.,])"/>
<add key="pattern3" value="(?<2>VALUE\s+"FileVersion"[\.,]\s*")[0-9]+(?<3>[\.,]\s*)[0-9]+(?<4>[\.,]\s*)"/>
<add key="pattern4" value="(?<2>assembly:\sAssemblyVersion\(")[0-9]+(?<3>[\.,])[0-9]+(?<4>[\.,])"/>
<add key="pattern5" value="(?<2>assembly:\sAssemblyVersion\(")[0-9]+(?<3>[\.,])[0-9]+(?<4>[\.,])"/>
相关文章推荐
- [补充]使用正则表达式更改编译版本号
- 版本低于1.7的jQuery过滤用户输入数据所使用的正则表达式存在缺陷
- Word中使用正则表达式批量更改前后缀位置
- Boost正则表达式的编译与使用方法集
- [Python下载CSDN博客]4. V3版本_使用正则表达式分析HTML(一)
- idea编译出现Error:(5, 22) java: -source 1.5 中不支持 lambda 表达式 (请使用 -source 8 或更高版本以启用 lambda 表达式)
- 使用正则表达式匹配进行文件类名的更改并且去除注释
- Python: 字符串搜索和匹配,re.compile() 编译正则表达式字符串,然后使用match() , findall() 或者finditer() 等方法
- struts2 --- 2.5版本 的正则表达式及通配符的使用
- jquery下载地址:https://code.jquery.com/jquery/ 影响范围: 版本低于1.7的jQuery过滤用户输入数据所使用的正则表达式存在缺陷,可能导致LOCA
- 使用 VC 编译 PCRE (PCRE 是一套正则表达式的开源库)
- [Python下载CSDN博客]4. V3版本_使用正则表达式分析HTML(二)
- 如何更改项目所使用的C#版本
- 在SQL使用正则表达式
- C# 中使用正则表达式 Regex.Matches方法的几个应用[转]
- window安装python3.5版本和简单的编译使用写一个简单的程序
- asp.net中的正则表达式的使用
- tm中使用Perl正则表达式秒杀stopwords
- Linux的文本处理工具及grep正则表达式的使用
- 使用正则表达式,字符串的批量替换