VS中实时获取SVN的版本号并写入到AssemblyInfo.cs中(C#)

原文: VS中实时获取SVN的版本号并写入到AssemblyInfo.cs中(C#)

在开发项目时,需要知道当前发布的到底是哪个版本,比较好的方式就是获取SVN的版本来作为项目的版本。项目版本一般由主版本、次版本、内部版本、修改版本四个部分组成,我们获取的SVN版本就作为修改版本即可。这里需要利用SVN的SubWCRev.exe来实现,一般安装了SVN后都会有的。SubWCRev.exe获取SVN版本并依据模板文件,更新到相应的目标文件中。下面是具体的步骤。

1.将项目中Properties中的AssemblyInfo.cs文件复制一份,命名为AssemblyInfo.template.cs,同时将该文件的编译属性设置为无。设置为无是为了不让该文件不参与编译。


同时将[assembly: AssemblyVersion("1.0.0.538")]和[assembly: AssemblyFileVersion("1.0.0.538")]修改为[assembly: AssemblyVersion("1.0.0.$WCREV$")]和[assembly: AssemblyFileVersion("1.0.0.$WCREV$")],如下图


其中$WCREV$是SubWCRev.exe用来匹配然后替换成最新版本号的,必须要这个名字。

2.在项目属性的生成事件中,添加预先生成事件命令,命令内容为SubWCRev $(SolutionDir)   $(ProjectDir)Properties\AssemblyInfo.template.cs  $(ProjectDir)Properties\AssemblyInfo.cs,如下图


3.编译生成后,可以看到AssemblyInfo.cs中的版本号已经变了,如下图


4.代码中取得该版本号并显示,代码如下

this.Text += String.Format("({0})", System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString());
结果如下图所示

转载请注明出处