使用正则表达式更改编译版本号
針對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>
?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="(?<4>#define\sFILEVER\s+)[0-9]+(?<5>[\.,])[0-9]+(?<6>[\.,])[0-9]+(?<7>[\.,])[0-9]+(?<8>[\r\n])"/>
13?????<add?key="pattern2"?value="(?<4>FILEVERSION\s+)[0-9]+(?<5>[\.,])[0-9]+(?<6>[\.,])[0-9]+(?<7>[\.,])[0-9]+(?<8>[\r\n])"/>
14?????<add?key="pattern3"?value="(?<4>assembly:\sAssemblyVersion\(")[0-9]+(?<5>[\.,])[0-9]+(?<6>[\.,])[0-9]+(?<7>[\.,])[0-9]+(?<8>")"/>
15?????<add?key="pattern4"?value="(?<4>assembly:\sAssemblyVersion\(")[0-9]+(?<5>[\.,])[0-9]+(?<6>[\.,])[0-9]+(?<7>[\.,])[0-9]+(?<8>")"/?-->
16?????<!--?更改<major?version>.<minor?version>?-->
17?????<add?key="pattern1"?value="(?<2>#define\sFILEVER\s+)[0-9]+(?<3>[\.,])[0-9]+(?<4>[\.,])"/>
18?????<add?key="pattern2"?value="(?<2>FILEVERSION\s+)[0-9]+(?<3>[\.,])[0-9]+(?<4>[\.,])"/>
19?????<add?key="pattern3"?value="(?<2>VALUE\s+"FileVersion"[\.,]\s*")[0-9]+(?<3>[\.,]\s*)[0-9]+(?<4>[\.,]\s*)"/>
20?????<add?key="pattern4"?value="(?<2>assembly:\sAssemblyVersion\(")[0-9]+(?<3>[\.,])[0-9]+(?<4>[\.,])"/>
21?????<add?key="pattern5"?value="(?<2>assembly:\sAssemblyVersion\(")[0-9]+(?<3>[\.,])[0-9]+(?<4>[\.,])"/>
總結
以上是生活随笔為你收集整理的使用正则表达式更改编译版本号的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 抖音如何删除自己的作品
- 下一篇: 小米云服务怎么查看图片