[补充]使用正则表达式更改编译版本号
2007-05-24 19:36
197 查看
1 string fileContents = readFile(fName);
2 rgx = new Regex(pattern);
3
4 {
5 switch (verArg.Length)
6 {
7 case 4: //<major version>.<minor version>.<build number>.<revision>
8 replacement = String.Format("${{4}}{0}${{5}}{1}${{6}}{2}${{7}}{3}", verArg);
9 break;
case 3:
replacement = String.Format("${{3}}{0}${{4}}{1}${{5}}{2}", verArg);
break;
case 2:
replacement = String.Format("${{2}}{0}${{3}}{1}", verArg);
break;
case 1:
replacement = String.Format("${{1}}{0}", verArg);
break;
}
}
// Replace the build component of the AssemblyVersion attribute
// with the specified build number.
fileContents = rgx.Replace(fileContents, replacement);
// reversion++
if (ConfigurationManager.AppSettings["autoreversion"] == "true")
{
// 读取匹配模式的行
Match matchLine = rgx.Match(fileContents);
string strLine = fileContents.Substring(matchLine.Groups[0].Index);
strLine = strLine.Substring(0, strLine.IndexOf("\r\n"));
// 匹配四段版本号
Regex regex = new Regex(@"(?<Major>[0-9]+)\s*[\.,]\s*(?<Minor>[0-9]+)\s*[\.,]\s*(?<Build>[0-9]+)\s*[\.,]\s*(?<Revision>[0-9]+)");
Match m = regex.Match(strLine);
// 获取Revision
string strRevision = m.Groups["Revision"].Value;
string strLineNew = strLine.Substring(0, m.Groups["Revision"].Index);
strLineNew += (int.Parse(strRevision) + 1) ;
// 更新编译序号
fileContents = fileContents.Replace(strLine, strLineNew);
}
// Open AssemblyVersionInfo file for Write access
// Note: FileMode.Truncate effectively deletes the contents
// of the file.
WriteFile(fName, fileContents, true);
2 rgx = new Regex(pattern);
3
4 {
5 switch (verArg.Length)
6 {
7 case 4: //<major version>.<minor version>.<build number>.<revision>
8 replacement = String.Format("${{4}}{0}${{5}}{1}${{6}}{2}${{7}}{3}", verArg);
9 break;
case 3:
replacement = String.Format("${{3}}{0}${{4}}{1}${{5}}{2}", verArg);
break;
case 2:
replacement = String.Format("${{2}}{0}${{3}}{1}", verArg);
break;
case 1:
replacement = String.Format("${{1}}{0}", verArg);
break;
}
}
// Replace the build component of the AssemblyVersion attribute
// with the specified build number.
fileContents = rgx.Replace(fileContents, replacement);
// reversion++
if (ConfigurationManager.AppSettings["autoreversion"] == "true")
{
// 读取匹配模式的行
Match matchLine = rgx.Match(fileContents);
string strLine = fileContents.Substring(matchLine.Groups[0].Index);
strLine = strLine.Substring(0, strLine.IndexOf("\r\n"));
// 匹配四段版本号
Regex regex = new Regex(@"(?<Major>[0-9]+)\s*[\.,]\s*(?<Minor>[0-9]+)\s*[\.,]\s*(?<Build>[0-9]+)\s*[\.,]\s*(?<Revision>[0-9]+)");
Match m = regex.Match(strLine);
// 获取Revision
string strRevision = m.Groups["Revision"].Value;
string strLineNew = strLine.Substring(0, m.Groups["Revision"].Index);
strLineNew += (int.Parse(strRevision) + 1) ;
// 更新编译序号
fileContents = fileContents.Replace(strLine, strLineNew);
}
// Open AssemblyVersionInfo file for Write access
// Note: FileMode.Truncate effectively deletes the contents
// of the file.
WriteFile(fName, fileContents, true);
相关文章推荐
- 使用正则表达式更改编译版本号
- 正则表达式使用方法(补充)
- 使用正则表达式匹配进行文件类名的更改并且去除注释
- 使用 VC 编译 PCRE (PCRE 是一套正则表达式的开源库)
- linux(5)--补充(管道| / 重定向> / xargs)/find 与xargs结合使用/vi,grep,sed,awk(支持正则表达式的工具程序)
- Python: 字符串搜索和匹配,re.compile() 编译正则表达式字符串,然后使用match() , findall() 或者finditer() 等方法
- 谓词的补充——使用谓词还可以进行正则表达式的验证
- Boost正则表达式的编译与使用方法集
- JAVA使用正则表达式提取微服务的名称与版本号
- Word中使用正则表达式批量更改前后缀位置
- js函数split(),用空格作为分隔符时,使用正则表达式,会存在浏览器兼容问题
- js正则表达式的使用详解
- 正则表达式re之编译
- 正则表达式单行、多行模式简介(使用说明)
- Java进阶——使用正则表达式检索、替换String中的特定字符和关于正则表达式的一切
- 正则表达式re之模块函数和编译标志
- Python使用正则表达式过滤或替换HTML标签的方法详解
- c++11 正则表达式基本使用
- Sublime Text中使用正则表达式删除空行
- mysql语法、特殊符号及正则表达式的使用