첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

▶ Assembly 클래스 : 어셈블리 빌드 날짜 구하기 예제

using System;
using System.Reflection;

Assembly assembly = Assembly.LoadFrom(@"D:\ARCA.HOME\ARCA.BINARY.RELEASE\ARCA.SERVER.HOST.exe");

DateTime dateTime = GetBuildDate(assembly);

Console.WriteLine(dateTime);

 

728x90

 

▶ Assembly 클래스 : 어셈블리 빌드 날짜 구하기

using System;
using System.IO;
using System.Reflection;

#region 빌드 날짜 구하기 - GetBuildDate(assembly)

/// <summary>
/// 빌드 날짜 구하기
/// </summary>
/// <param name="assembly">어셈블리</param>
/// <returns>빌드 날짜</returns>
public DateTime GetBuildDate(Assembly assembly)
{
    string location = assembly.Location;

    const int HEADER_OFFSET           = 60;
    const int LINKER_TIMESTAMP_OFFSET = 8;

    byte[] bufferArray = new byte[2048];

    Stream stream = null;
 
    try
    {
        stream = new FileStream(location, FileMode.Open, FileAccess.Read);

        stream.Read(bufferArray, 0, 2048);
    }
    finally
    {
        if(stream != null)
        {
            stream.Close();
        }
    }
 
    int index = BitConverter.ToInt32(bufferArray, HEADER_OFFSET);

    int secondCountSince1970 = BitConverter.ToInt32(bufferArray, index + LINKER_TIMESTAMP_OFFSET);

    DateTime dateTime = new DateTime(1970, 1, 1, 0, 0, 0);

    dateTime = dateTime.AddSeconds(secondCountSince1970);

    dateTime = dateTime.AddHours(TimeZone.CurrentTimeZone.GetUtcOffset(dateTime).Hours);

    return dateTime;
}

#endregion
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요