2010-02-10 11 views
7

Necesito que la fecha de compilación esté codificada de alguna manera en el código.Agregar fecha de compilación al código

¿Cómo puedo hacer eso?

Gracias

+0

Ver http://stackoverflow.com/questions/320887/c-put-date-into-program-when-compiled/1835441 –

Respuesta

5

En la mayoría de mis proyectos utilizo la función 'RetrieveLinkerTimestamp'.

 public DateTime RetrieveLinkerTimestamp(string filePath) 
    { 
     const int PeHeaderOffset = 60; 
     const int LinkerTimestampOffset = 8; 

     byte[] b = new byte[2048]; 
     Stream s = Stream.Null; 
     try 
     { 
      s = new FileStream(filePath, FileMode.Open, FileAccess.Read); 
      s.Read(b, 0, 2048); 
     } 
     finally 
     { 
      if ((s != null)) s.Close(); 
     } 

     int i = BitConverter.ToInt32(b, PeHeaderOffset); 

     int SecondsSince1970 = BitConverter.ToInt32(b, i + LinkerTimestampOffset); 
     DateTime dt = new DateTime(1970, 1, 1, 0, 0, 0); 
     dt = dt.AddSeconds(SecondsSince1970); 
     dt = dt.AddHours(TimeZone.CurrentTimeZone.GetUtcOffset(dt).Hours); 
     return dt; 
    } 

tal vez esto es de ayuda?

aplausos,

Cristiano

+0

Lo llamé con System.Reflection.Assembly.GetExecutingAssembly(). Ubicación Y funcionó perfecto –

0

control Fuente o construcción de servidor de integración Continuious? no exactamente el tiempo de compilación y el código, pero obtiene un tiempo de compromiso y un número de compilación.

+0

Te refieres a leer desde el código la fecha de mi pago y envío? Suena una solución un poco extraña. –

2

Puede use a T4 template generar su código donde necesite meta-información como esta.

<#@ assembly name="System.Core.dll" #> 
<#@ template language="C#v3.5" debug="True" hostspecific="True" #> 
<#@ output extension=".cs" #> 
using System; 

namespace MyNamespace 
{ 
    public class MyClass 
    { 
     // <#= DateTime.Now.ToString() #> 
    } 
} 

que la producción de la plantilla voluntad un archivo de clase que se parece a:

using System; 

namespace MyNamespace 
{ 
    public class MyClass 
    { 
     // 2/9/2010 11:06:59 PM 
    } 
} 

Es posible need to add a build task or a pre-build step para ejecutar el compilador de T4 en cada generación.

Cuestiones relacionadas