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

时间:2009-06-11 15:19:13

标签: c# .net assemblies versioning

我正在考虑以下设计:

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 个答案:

答案 0 :(得分:4)

我认为你的第一个问题是品味问题。您可以使用String.Format获取所需的任何样式。关于你的上一个问题:

System.Reflection.Assembly.GetExecutingAssembly().Version

返回当前程序集的版本号,并且:

typeof(SomeTypeInSomeAssembly).Assembly.Version

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

答案 1 :(得分:1)

对于构建日期,请查看 http://dotnetfreak.co.uk/blog/archive/2004/07/08/determining-the-build-date-of-an-assembly.aspx

对于版本/获取版本,请查看System.Reflection.Assembly名称空间。

至于以漂亮的格式打印日期,您将要使用由DateTime类构建的扩展方法,如.ToShortDateString()或CultureInfo。

答案 2 :(得分:1)

我们通过CruiseControl.NET运行我们所有的生产版本,CruiseControl.NET(以及许多其他东西)具有版本构建的功能。

然后,我们有一段代码片段,它们将CC.NET生成的内部版本号(和其他内容)应用到AssemblyInfo.cs,就在它被提供给编译器进行构建之前。

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

答案 3 :(得分:0)

对于构建日期或时间戳,您可以在构建时将其嵌入到程序集中 为了做到这一点,see here