结合日期和时间

时间:2009-08-14 07:09:02

标签: c# .net 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

有什么建议吗?

3 个答案:

答案 0 :(得分: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);

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

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

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

答案 1 :(得分:1)

怎么样:

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

答案 2 :(得分:1)

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

File.GetLastWriteTime(Assembly.GetExecutingAssembly().Location);

返回DateTime对象。