编译日期和时间

是否有一些聪明的方法来获取dll构建/编译的日期和时间?

在部署应用程序时,我正在使用程序集版本编号和reflection来检索和显示此信息。 但在某些情况下,知道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 

有什么建议?

如果您将程序集版本(通常在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(虽然有些MSDN页面说它是随机数)

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

关于什么:

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