C# VS2008, VS2010 .NET 使用 SVN 的自动生成版本号

怎样在VS2005/2008/2010下里用SVN的SubWCRev自增修订号

为了使软件版本号的最后一位,即修订号与由svn管理的代码库修订号保持一致并自动更新,可以利用VS2005的生成事件和 svn 中的 subwcrev 程序实现,步骤如下:

工具/原料

  • Visual Studio 2005/2010/2008
  • SVN 客户端(TortoiseSVN 或其他 )

步骤/方法

  1. 编写一个模板文件,比如取名为 version_template.h,内容如下
    #ifndef _VERSION_H_
    #define _VERSION_H_
    #define VER_MAJOR 1
    #define VER_MINOR 0
    #define VER_REVISION $WCREV$
    #endif //!_VERSION_H_
  2. 找到subwcrev.exe 可执行文件,一般在 svn 客户端的安装目录下,比如TortoiseSVN 是在其安装目录的bin文件夹下。这里,笔者将subwcrev.exe 复制到了代码工程目录下,方便使用。
  3. 在VS2005的项目属性页->预生成事件->命令行中添加一句:
    $(SolutionDir)\subwcrev.exe $(SolutionDir) $(SolutionDir)\src\qmlv\version_template.h $(SolutionDir)\src\qmlv\version.h$(ProjectDir)SubWCRev.exe  不能有空格或$(SolutionDir)   $(ProjectDir)Properties\AssemblyInfo.template.cs  $(ProjectDir)Properties\AssemblyInfo.cs
    SubWCRev 调用语法:
    SubWCRev WorkingCopyPath [SrcVersionFile DstVersionFile]
    怎样在VS2005下里用SVN的SubWCRev自增修订号
  4. 这样,代码编译通过后,预生成事件被触发,VS2005 调用SubWCRev.exe程序,替换version_template.h中的宏$WCREV$为当前的svn修订号,并另存为version.h文件,version.h 会类似于:
    #ifndef _VERSION_H_
    #define _VERSION_H_
    #define VER_MAJOR 1
    #define VER_MINOR 0
    #define VER_REVISION 2821
    #endif //!_VERSION_H_
  5. 在程序中需要显示版本号的地方,引用VER_REVISION 宏即可。

 

c#

在windows的资源管理器中进入Properties文件夹,把AssemblyInfo.cs文件复制一份,命名为AssemblyInfo.template.cs,并把它加入到项目中来。

3. 修改AssemblyInfo.template.cs的属性

AssemblyInfo.template.cs文件是用来自动生成版本号的模板文件,它不应该被编译,所以我们要把它的Build Action改成None,如下图所示:

 

修改AssemblyInfo.template.cs的内容

在这个文件中,你能找到如下两行代码:

[assembly: AssemblyVersion( "1.0.0.0" )] 
[assembly: AssemblyFileVersion( "1.0.0.0" )] 

其中的“1.0.0.0”就是程序的版本号,它使用的是“主版本号.次版本号.内部版本号.修订号”的形式。前三个改成你自己需要的数字,最后一个改成“$WCREV$”,改完之后应该是类似下面的样子:

[assembly: AssemblyVersion( "1.0.0.$WCREV$" )] 
[assembly: AssemblyFileVersion( "1.0.0.$WCREV$" )]

 后续如上命令操作

 

如果想在其它地方获取AssemblyInfo.cs的版本号可以使用微软内置方法:

            AssemblyName name = Assembly.GetExecutingAssembly().GetName();

            String version = name.Version.ToString();

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值