2009-08-14 40 views
14

¿Existe alguna forma inteligente de obtener la fecha y hora de creación/compilación de la dll?Compilar fecha y hora

Estoy usando la numeración y la reflexión de la versión de ensamblaje para recuperar y mostrar esta información cuando se implementa la aplicación. Pero en algunos casos, sería más conveniente saber cuando dll fuera compilado en realidad que el número de versión de incremento automático. No creo que la fecha de modificación en el archivo dll en sí sea confiable debido a la forma en que se implementa la aplicación.

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 

¿Alguna sugerencia?

Respuesta

17

Si se establece la versión de ensamblado (por lo general en AssemblyInfo.cs) a Major.Minor.* (por ejemplo 1.0.*), entonces es probable que pueda recuperar la fecha de compilación en tiempo de ejecución con algo como esto:

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

Cuando se utiliza un * para la tercera y cuarta parte de la versión de montaje, a continuación, estas dos partes se ajustan automáticamente en tiempo de compilación para los siguientes valores:

  • tercera parte es el número de días desde el 2000-01-01
  • cuarta parte es el número de segundos transcurridos desde la medianoche dividido por dos (aunque some MSDN pages dicen que es un número aleatorio)

Ah, y hay que tener cuidado de horario de verano a sí mismo (por ejemplo, agregue una hora si es horario de verano).

+1

Eso es bastante impresionante, funciona como un encanto. ¡Gracias! :) –

+0

Este truco salvó mi día! –

1

¿Qué hay de:

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

No es una buena idea, porque no es estable y se puede cambiar fácilmente. Como ejemplo, simplemente descargue un archivo de algún servidor FTP y eche un vistazo a la fecha de creación. Obtendrás la fecha, cuando el archivo fue creado en tu pc. Thous conduce a información incorrecta. Esto también puede ocurrir (dependiendo del programa que use) si comprime, descomprime un archivo o lo envía como adjunto por correo a alguien. En todos estos casos, el tiempo de creación es un buen candidato para cambiar. – Oliver

+2

¿Qué pasa con la fecha de la última modificación? – joshcomley

+1

Sí, en mi experiencia, la fecha de modificación es más precisa que la fecha de creación (en archivos donde la modificación después de la creación no ocurre en realidad). – Abacus