代码之家  ›  专栏  ›  技术社区  ›  Jakob Gade

编制日期和时间

  •  15
  • Jakob Gade  · 技术社区  · 15 年前

    有没有什么聪明的方法来获取构建/编译DLL的日期和时间?

    i_m使用程序集版本编号和反射在部署应用程序时检索和显示此信息。但在某些情况下,了解 什么时候? 然后实际编译了DLL,而不是自动递增的版本号。我不认为DLL文件本身的修改日期是可靠的,因为应用程序的部署方式。

    Dim assemblies = AppDomain.CurrentDomain.GetAssemblies
    Dim assemblyName As String
    Dim assemblyVersion As String
    
    For Each assembly In assemblies
      assemblyName = assembly.GetName.Name.ToString
      assemblyVersion = assembly.GetName.Version.ToString
      ' How to get the date/time of the build??
      ' ...
    Next
    

    有什么建议吗?

    2 回复  |  直到 8 年前
        1
  •  18
  •   M4N    15 年前

    如果将程序集版本(通常在assemblyinfo.cs中)设置为 Major.Minor.* (例如) 1.0.* ,然后您可能可以在运行时使用如下方法检索生成日期:

    var version = Assembly.GetExecutingAssembly().GetName().Version;
    DateTime buildDate = new DateTime(2000, 1, 1)
        .AddDays(version.Build)
        .AddSeconds(version.Revision*2);
    

    当使用 * 对于汇编版本的第三部分和第四部分,则这两部分在编译时自动设置为以下值:

    • 第三部分是2000-01-01以来的天数
    • 第四部分是从午夜开始的秒数除以2(尽管 some MSDN pages 假设它是一个随机数)

    哦,而且你必须自己照顾夏令时(例如,如果是夏令时,增加一个小时)。

        2
  •  1
  •   joshcomley    14 年前

    如何:

    new FileInfo(Assembly.GetExecutingAssembly().Location).CreationTime;