代码之家  ›  专栏  ›  技术社区  ›  Sasha

实现二进制版本控制的最佳方法是什么?

  •  0
  • Sasha  · 技术社区  · 15 年前

    我正在考虑以下设计:

    static class AppVersion
    {
         public static string BuildDate 
         {
           get; set;
         }
         public static string Version 
         {
           get; set;
         }
         public static string GetVersion 
         {
           get; set;
         }
    }
    

    关于这方面的几个问题:

    1. 如何获取生成日期?
    2. 我怎样才能以一种好的格式打印日期?
    3. 如何以良好的格式获取和打印Visual Studio版本?
    4. 将版本硬编码到二进制文件中可能是个坏主意,因此我将版本放入程序集信息中。我如何以编程方式获得它?
    4 回复  |  直到 15 年前
        1
  •  4
  •   Mehrdad Afshari    15 年前

    我认为你的第一个问题是品味问题。你可以使用 String.Format 想要什么款式都行。关于最后一个问题:

    System.Reflection.Assembly.GetExecutingAssembly().Version
    

    返回当前程序集的版本号和:

    typeof(SomeTypeInSomeAssembly).Assembly.Version
    

    将返回包含特定类型的程序集的版本号。

        2
  •  1
  •   tomfanning    15 年前

    我们通过CruiseControl.net运行所有生产版本,CruiseControl.net(除其他许多功能外)具有版本构建功能。

    然后,我们有一段代码,将cc.net生成的内部版本号(以及其他内容)应用于assemblyinfo.cs,然后再将其提供给编译器进行构建。

    我想您可以使用类似的技术将构建日期插入到应用程序某个类中的常量中。

        3
  •  1
  •   CodeLikeBeaker    15 年前

    有关生成日期,请查看 http://dotnetfreak.co.uk/blog/archive/2004/07/08/determining-the-build-date-of-an-assembly.aspx

    有关版本/get版本,请查看system.reflection.assembly名称空间。

    至于以漂亮的格式打印日期,您需要使用基于日期时间类(如.toshortdatestring()或cultureinfo)构建的扩展方法。

        4
  •  0
  •   Community miroxlav    7 年前

    对于生成日期或时间戳,可以在生成时将其嵌入到程序集中。
    如何做到这一点, see here .