2009-03-05 8 views

risposta

17

In genere ci basta andare con l'eseguibile di ultima modifica data. Questo verrà impostato quando l'exe viene creato e di solito non cambia mai (a meno che qualcuno non modifichi effettivamente il file). Quando il file è installato, copiato, spostato, ecc., Windows non cambia quel valore.

DateTime buildDate = 
    new FileInfo(Assembly.GetExecutingAssembly().Location).LastWriteTime; 

Utilizziamo questa tecnica per le finestre di dialogo about nelle nostre app C# e C++.

+0

Funziona perfettamente. – Nikhil

+6

Se si lavora con gli assembly GAC, questo verrà restituito quando questo assembly è stato installato. –

14

Il terzo numero della versione di montaggio è una data julian con 0 = 1 gennaio 2000 se si sta utilizzando [assembly: ("1.0 *") AssemblyVersion]

esempio

DateTime buildDate = new DateTime(2000,1,1).AddDays(
    System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.Build 
); 
+0

E, come/dove esattamente lo fai, praticamente? "*" non è consentito nel normale campo Informazioni di assemblaggio nelle proprietà del progetto. – Nyerguds

+1

Ah, non importa. Accetta "*" come terzo valore nella finestra di dialogo delle proprietà se l'ultimo campo è vuoto. Grazie per questo. In una nota correlata, il quarto campo (Revisione) è il timestamp, ma deve essere moltiplicato per 2 prima di poter essere utilizzato per AddSeconds(). – Nyerguds

0

Di solito ci sono parole chiave nel sistema di controllo del codice sorgente per questo genere di cose.

In caso contrario, guarda tra cui la data e l'ora nel numero di versione, o semplicemente la creazione di un file di codice piccola sorgente che contiene la data e l'ora, e verrà incluso nella build

2

Si should si utilizza il controllo della versione - Subversion è gratuito. Quindi è possibile includere un numero dal sistema di controllo della versione che identifichi in modo univoco il codice sorgente utilizzato per creare l'app. Una data non lo farà. Ci sono anche altri vantaggi.

  • Cronologia completa di tutte le modifiche al progetto.
  • Lavora perfettamente con altri sviluppatori sullo stesso progetto.

EDIT: Nikhil sta già facendo tutto questo. Ma a for some incomprehensible reason gli è stato detto di includere anche la data. Lascerò comunque questa risposta qui, per i futuri lettori di questa domanda.

+0

Questo è esattamente quello che ho spiegato, il numero di revisione è tutto ciò che serve, che è esattamente ciò che abbiamo adesso. Ma per qualche motivo non riesco a capire, mi è stato detto di includere la data e l'ora esatta in cui è stata costruita l'app. – Nikhil

+0

Questo non è pertinente alla domanda, ma è un buon consiglio generale. – Nikhil

+0

L'ho automatizzato con successo con https://www.nuget.org/packages/StampSvn.Fody/ – mamuesstack

Problemi correlati