2009-08-14 17 views
14

Esiste un modo intelligente per ottenere la data e l'ora in cui la DLL è stata creata/compilata?Compilare data e ora

Sto utilizzando la numerazione e il riflesso della versione dell'assieme per recuperare e visualizzare queste informazioni quando l'app viene distribuita. Ma in alcuni scenari sarebbe più comodo conoscere quando quindi la DLL è stata effettivamente compilata piuttosto che il numero di versione con incremento automatico. Non penso che la data di modifica sul file dll stesso sia affidabile a causa del modo in cui viene distribuita l'app.

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 

Qualche suggerimento?

risposta

17

Se si imposta la versione di assembly (di solito in AssemblyInfo.cs) per Major.Minor.* (ad es 1.0.*), allora si può probabilmente recuperare la data di costruzione in fase di esecuzione con qualcosa di simile:

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

Quando si utilizza un * per la terza e quarta parte della versione assemblaggio, allora queste due parti sono impostati automaticamente al momento della compilazione ai seguenti valori:

  • terza parte è il numero di giorni dal 2000-01-01
  • 01.235.
  • quarta parte è il numero di secondi dalla mezzanotte diviso per due (anche se some MSDN pages dire che è un numero casuale)

Oh, e si deve prendere cura di ora legale da soli (per esempio aggiungi un'ora se è ora legale).

+1

Questo è abbastanza impressionante, funziona come un fascino. Grazie! :) –

+0

Questo trucco mi ha salvato la giornata! –

1

Che dire:

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

Questa non è una buona idea, perché non è stabile e può essere facilmente modificata. Ad esempio, basta scaricare un file da un server FTP e dare un'occhiata alla data di creazione. Riceverai la data, quando il file è stato creato sul tuo pc. Il che porta a informazioni sbagliate. Questo può anche accadere (a seconda del programma che usi) se fai zip, decomprimi un file o lo mandi come allegato per posta a qualcuno. In tutti questi casi il tempo di creazione è un buon candidato da cambiare. – Oliver

+2

E la data dell'ultima modifica allora? – joshcomley

+1

Sì, nella mia esperienza la data di modifica è più accurata della data di creazione (nei file in cui la modifica dopo la creazione non si verifica effettivamente). – Abacus