编译日期和时间

Jak*_*ade 15 .net c# vb.net reflection

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

在部署应用程序时,我正在使用程序集版本编号和反射来检索和显示此信息.但在某些情况下,知道什么时候 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
Run Code Online (Sandbox Code Playgroud)

有什么建议?

M4N*_*M4N 18

如果您将程序集版本(通常在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);
Run Code Online (Sandbox Code Playgroud)

当使用a *作为程序集版本的第三和第四部分时,这两个部分在编译时自动设置为以下值:

  • 第三部分是自2000-01-01以来的天数
  • 第四部分是自午夜以来的秒数除以2(尽管一些MSDN页面表示它是随机数)

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


You*_*oub 7

您可以通过以下方式获取:

File.GetLastWriteTime(Assembly.GetExecutingAssembly().Location);
Run Code Online (Sandbox Code Playgroud)

返回DateTime对象。