之前有一篇博文《TFS Build 2010生成构建之 dll、exe文件的版本》,主要讲的是CS程序中的exe和dll的版本。这里,讲下我们的网站版本标识方法。
- 网站dll的编译版本可以参考上一篇博文。
- 快速得知网站版本,我们一般在网站根目录下放一个版本文件,在编译网站的时候修改此文件即可。
1 制作版本文件
我们选用xml文件进行标识,其中加入如下字段,注意版本要留空,真正版本会写入其中。将其保存为about.xml
<About>
<ProductName>MyProductName</ProductName>
<Version></Version>
<Company>MyCompany</Company>
</About>
2 制作修改文件内容的插件
新建一个C#的控制台程序ModifyVersionInfoWeb
定义参数
string FilePath = args[0].ToString();//接收文件地址AssemblyInfo.cs文件的地址
string Version = args[1].ToString();
去掉只读属性(必须,获取的源码皆为只读)
File.SetAttributes(FilePath, FileAttributes.Normal);//去掉只读属性
读取文件
FileStream fs = new FileStream(FilePath, FileMode.Open, FileAccess.Read);
StreamReader SR = new StreamReader(fs, System.Text.Encoding.Default);
SR.BaseStream.Seek(0, SeekOrigin.Begin);
string strLine = SR.ReadToEnd();
SR.Close();
fs.Close();
修改文件
string OutputFile;
//替换AssemblyVersion
OutputFile = Regex.Replace(strLine, "<Version>", "<Version>" + Version , RegexOptions.IgnoreCase);
重写文件
FileStream fs2 = new FileStream(FilePath, FileMode.Create, FileAccess.Write);
StreamWriter SW = new StreamWriter(fs2, System.Text.Encoding.Default);
SW.Flush();
//SW.BaseStream.Seek(0, SeekOrigin.End);
SW.WriteLine(OutputFile);
SW.Close();
fs2.Close();
这样,我们再执行一个修改的时候的方式是
ModifyVersionInfoWeb.exe x:\ about.xml 2.0.1520.1
3 修改生成流程
直接去修改xml文件
在If CreatLabel过程后拖入一个放入一个"InvokeProcess"取名为"ModifyAboutFile"
修改Argument为:
String.Format(SourcesDirectory + "\WebSite\about.xml" + " " + BuildDetail.BuildNumber + " " + BuildDetail.BuildNumber)
FileName为(插件的放置位置在生成服务器上):
String.Format("c:\ModifyVersionInfoweb.exe")