2009-08-14 39 views
14

Gibt es eine clevere Möglichkeit, das Datum und die Uhrzeit zu erhalten, als die DLL erstellt/kompiliert wurde?Datum und Uhrzeit kompilieren

Ich verwende die Assembly-Versionsnummerierung und -reflexion, um diese Informationen abzurufen und anzuzeigen, wenn die App bereitgestellt wird. Aber in einigen Szenarien wäre es bequemer zu wissen, wenn dann dll tatsächlich kompiliert wurde, anstatt die automatisch inkrementierende Versionsnummer. Ich denke nicht, dass das geänderte Datum in der DLL-Datei selbst aufgrund der Art, wie die App bereitgestellt wird, zuverlässig ist.

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 

Irgendwelche Vorschläge?

Antwort

17

Wenn Sie die Assemblierung-Version (in der Regel in AssemblyInfo.cs) zu Major.Minor.* (zB 1.0.*) gesetzt ist, dann können Sie wahrscheinlich das Erstellungsdatum zur Laufzeit mit so etwas wie diese abrufen:

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

Bei Verwendung eines * für den dritten und vierten Teil der Baugruppe Version, dann werden diese beiden Teile automatisch bei der Kompilierung auf die folgenden Werte gesetzt:

  • dritter Teil seit 2000-01-01 die Anzahl der Tage ist
  • vierte Teil ist die Anzahl der Sekunden seit Mitternacht durch zwei geteilt (obwohl some MSDN pages sagen, es ist eine Zufallszahl)

Oh, und Sie haben von Sommerzeit kümmern sich (z addieren Sie eine Stunde, wenn es Sommerzeit ist).

+1

Das ziemlich genial ist, es funktioniert wie ein Charme. Vielen Dank! :) –

+0

Dieser Trick rettete meinen Tag! –

1

Was:

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

Dies ist keine gute Idee, denn es ist nicht stabil und kann leicht geändert werden. Als Beispiel laden Sie einfach eine Datei von einem FTP-Server herunter und schauen sich das Erstellungsdatum an. Sie erhalten das Datum, wenn die Datei auf Ihrem PC erstellt wurde. Tausende führen zu falschen Informationen. Dies kann auch passieren (abhängig von dem Programm, das Sie verwenden), wenn Sie eine Datei zippen, entzippen oder als Anhang per E-Mail an jemanden senden. In all diesen Fällen ist die Erstellungszeit ein guter Kandidat für Änderungen. – Oliver

+2

Was ist mit dem letzten Änderungsdatum dann? – joshcomley

+1

Ja, nach meiner Erfahrung ist das Änderungsdatum genauer als das Erstellungsdatum (in Dateien, in denen die Änderung nach der Erstellung nicht stattfindet). – Abacus