2010-02-10 36 views
7

Tôi cần ngày biên dịch để được mã hóa bằng cách nào đó trong mã.Thêm ngày biên soạn vào mã

Tôi có thể làm điều đó như thế nào?

Cảm ơn

+0

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

Trả lời

5

Trong hầu hết các dự án của tôi, tôi sử dụng chức năng '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; 
    } 

có thể đây là trợ giúp?

cổ vũ,

Christian

+0

Tôi gọi nó bằng System.Reflection.Assembly.GetExecutingAssembly() .Địa chỉ Và nó hoạt động hoàn hảo –

0

Điều khiển nguồn hoặc Máy chủ tích hợp liên tục? không chính xác biên dịch thời gian và mã, nhưng nó nhận được một thời gian cam kết và xây dựng số.

+0

Bạn có nghĩa là để đọc từ mã ngày thanh toán của tôi? Nghe có vẻ hơi lạ. –

2

Bạn có thể use a T4 template để tạo mã của mình bất cứ nơi nào bạn cần siêu thông tin như thế này.

<#@ 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() #> 
    } 
} 

Đó mẫu sẽ ra một tập tin lớp trông giống như:

using System; 

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

Bạn có thể need to add a build task or a pre-build step để chạy trình biên dịch T4 trên mỗi xây dựng.