您的位置:首页 > 其它

[补充]使用正则表达式更改编译版本号

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: