zoukankan      html  css  js  c++  java
  • 利用VS的预生成事件获取SVN版本作为项目内部版本号

    VS中的Properties下的AssemblyInfo.cs可以设置相应的版本号。下面是AssemblyInfo.cs设置版本的方式。

    [assembly: AssemblyVersion("1.0.0.0")]
    [assembly: AssemblyFileVersion("1.0.0.0")]
    但是,这个需要每次都设定,而且与SVN上的版本号并不一致,追塑起来不是很方便。所以就想着取SVN上的版本号作为项目的版本号。要得到SVN的版本号,可以在SVN的节眯下,通过SVN的命令svn info来获得信息。这通过CMD命令很容易可以达到,不过,我希望在VS编译时,每次都去获取,所以选择了在VS预生成事件命令中去执行。看下图


    预生成事件命令行中输入相应的CMD命令。

    1.svn info>svn_info.txt 是执行SVN命令,获取相应的版本信息,然后存到svn_info.txt的文件中。
    2.findstr "Revision" svn_info.txt>..svn_version.dll 从svn_info.txt中查找出版本号,并存到svn_version.dll中。
    3.del svn_info.txt 删除svn_info.txt文件。

    在编译时将会生成svn_version.dll,需要将该文件添加到项目中,以便能同时发布。这里取名为svn_version.dll,可以找成其他的名字和后缀名。

    这样在项目启动时,可以通过读取svn_version.dll中的内容来获取SVN版本号。

    String version = "1.1.1"
                String serverPhysicalPath = Server.MapPath(".");//WEB上,需要将服务路径转换成本地路径。如果是WinForm程序,可以获取程序路径。
                if (!serverPhysicalPath.EndsWith("\"))
                {
                    serverPhysicalPath += "\";
                }
                String svnVersionPath = serverPhysicalPath + "svn_version.dll";
                StreamReader svnSteamReader = new StreamReader(svnVersionPath);
                String line = svnSteamReader.ReadLine();
                if (!String.IsNullOrWhiteSpace(line))
                {
                    String[] temps = line.Split(':');
                    if (temps.Length > 1)
                    {
                        version += String.Format(".{0}", temps[1]);
                    }
                }
                return version;
    以上是将SVN信息存成文件后,再读取来实现的。也可以考虑直接将SVN的版本信息写到AssemblyInfo.cs中,然后再获取。


  • 相关阅读:
    常用正则表达式(数字、字符、固定格式)
    阿里云serverless使用笔记
    http的get请求与post请求区别
    HTTPS各版本安全策略HTTPS1_1_TLS1_0、HTTPS2_TLS1_0、HTTPS2_TLS1_2
    REST式的web服务
    JAVA Remote Object
    AJAX的核心XMLHttpRequest对象
    SQL中TOP,LIMIT,ROWNUM的用法
    半双工模式和全双工模式
    win7系统网卡驱动正常,网线连接设备正常,但电脑右下角网络图片显示一直在转圈或者显示一个黄色感叹号的解决办法
  • 原文地址:https://www.cnblogs.com/sparkleDai/p/7604990.html
Copyright © 2011-2022 走看看