2009-03-05 8 views

Respuesta

17

Normalmente nos vamos con las de ejecutables última fecha de modificación. Esto se establecerá cuando se construya el ejecutable y, por lo general, nunca cambia (salvo que alguien realmente edite el archivo). Cuando el archivo se instala, copia, mueve, etc., Windows no cambia ese valor.

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

Utilizamos esta técnica para los diálogos sobre en nuestras aplicaciones C# y C++.

+0

Esto funciona perfecto. – Nikhil

+6

Si está trabajando con ensamblajes GAC, esto volverá cuando se instaló este ensamblaje. –

14

El tercer número de la versión de ensamblado es una fecha juliana con 0 = 1 Ene 2000 si está utilizando [assembly: ("1.0. *") AssemblyVersion]

por ejemplo,

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

Y, ¿cómo/dónde exactamente lo haces, prácticamente? "*" no está permitido en el campo Información de ensamblaje normal en las propiedades del proyecto. – Nyerguds

+1

Ah, no importa. Acepta "*" como tercer valor en el diálogo de propiedades si el último campo se deja vacío. Gracias por esto. En una nota relacionada, el cuarto campo (Revisión) es la marca de tiempo, pero debe multiplicarse por 2 para poder usar AddSeconds(). – Nyerguds

0

Generalmente, hay palabras clave en el sistema de control de código fuente para este tipo de cosas.

De lo contrario, a ver incluyendo la fecha y hora en el número de versión, o simplemente crear un archivo de código fuente pequeña que contiene la fecha y la hora, y vaya a incluirse en la construcción

2

Usted should utilizar el control de versiones - Subversion es gratis. Luego, podría incluir un número del sistema de control de versiones que identifique inequívocamente el código fuente utilizado para construir la aplicación. Una fecha no hará eso. Hay otras ventajas también.

  • Historial completo de todos los cambios en el proyecto.
  • Trabaja a la perfección con otros desarrolladores en el mismo proyecto.

EDIT: Nikhil ya está haciendo todo esto. Pero for some incomprehensible reason le dijeron que incluya la fecha también. Voy a dejar esta respuesta aquí de todos modos, para futuros lectores de esta pregunta.

+0

Eso es exactamente lo que expliqué, el número de revisión es todo lo que necesita, que es exactamente lo que tenemos en este momento. Pero por alguna razón que no puedo entender, me han pedido que incluya la fecha y hora exactas en que se creó la aplicación. – Nikhil

+0

Esto no es relevante para la pregunta, pero es un buen consejo general. – Nikhil

+0

Lo automaticé con éxito con https://www.nuget.org/packages/StampSvn.Fody/ – mamuesstack

Cuestiones relacionadas