2011-08-30 4 views

답변

2

더 나은 방법으로이을 시도하십시오!

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

예를 들어,이 기능을 사용하려면

Console.WriteLine(buildDate.ToString("dddd, dd MMMM yyyy HH:mm:ss")); 

해야하는 Tuesday, 30 August 2011 09:44:07

편집과 같은 형식으로 출력 : 여기에 분명히 그 파일 시스템에 의존하지만 found this page

C#으로 변환 되셨습니까?

private DateTime RetrieveLinkerTimestamp() 
{ 
    string filePath = System.Reflection.Assembly.GetCallingAssembly().Location; 
    const int c_PeHeaderOffset = 60; 
    const int c_LinkerTimestampOffset = 8; 
    byte[] b = new byte[2048]; 
    System.IO.Stream s = null; 

    try 
    { 
     s = new System.IO.FileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read); 
     s.Read(b, 0, 2048); 
    } 
    finally 
    { 
     if (s != null) 
     { 
      s.Close(); 
     } 
    } 

    int i = System.BitConverter.ToInt32(b, c_PeHeaderOffset); 
    int secondsSince1970 = System.BitConverter.ToInt32(b, i + c_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; 
} 

신용은 그래서 당신은하지만, 그것은 컴파일의 날짜를 포함하지 않는 파일 시스템에 의존의이

Console.WriteLine(RetrieveLinkerTimestamp().ToString("dddd, dd MMMM yyyy HH:mm:ss")); 
+0

처럼 사용할 수 있어야 제프 앳 우드

로 이동합니다. –

+0

좋아, 내가 더 나은 방법을 찾은 것 같아. –

+0

고마워, 좋아 보인다! –

관련 문제