elvis0123

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

之前有一篇博文《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")

posted on 2011-11-10 17:41  elvis  阅读(363)  评论(0编辑  收藏  举报