> 백엔드 개발 > C++ > .NET 실행 파일의 빌드 날짜를 프로그래밍 방식으로 어떻게 얻을 수 있습니까?

.NET 실행 파일의 빌드 날짜를 프로그래밍 방식으로 어떻게 얻을 수 있습니까?

Mary-Kate Olsen
풀어 주다: 2025-01-22 01:07:09
원래의
607명이 탐색했습니다.

How Can I Programmatically Get the Build Date of a .NET Executable?

.NET 실행 파일에서 빌드 날짜 추출

많은 개발자가 빌드 번호에만 액세스할 수 있으므로 .NET 실행 파일의 빌드 날짜를 프로그래밍 방식으로 결정하는 것은 까다로울 수 있습니다. 이 문서에서는 PE 헤더에 포함된 타임스탬프를 활용하여 C#을 사용하여 이 정보를 검색하는 강력한 방법을 자세히 설명합니다.

PE 헤더 타임스탬프 활용

PE(Portable Executable) 헤더에는 실행 파일의 링크 시간을 반영하는 타임스탬프가 저장됩니다. Joe Spivey의 C# 코드는 이에 액세스하는 편리한 방법을 제공합니다.

public static DateTime GetLinkerTime(this Assembly assembly, TimeZoneInfo target = null)
{
    string filePath = assembly.Location;
    const int c_PeHeaderOffset = 60;
    const int c_LinkerTimestampOffset = 8;

    byte[] buffer = new byte[2048];

    using (FileStream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
        stream.Read(buffer, 0, 2048);

    int offset = BitConverter.ToInt32(buffer, c_PeHeaderOffset);
    int secondsSince1970 = BitConverter.ToInt32(buffer, offset + c_LinkerTimestampOffset);
    DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

    DateTime linkTimeUtc = epoch.AddSeconds(secondsSince1970);

    TimeZoneInfo tz = target ?? TimeZoneInfo.Local;
    DateTime localTime = TimeZoneInfo.ConvertTimeFromUtc(linkTimeUtc, tz);

    return localTime;
}
로그인 후 복사

사용 예:

DateTime buildDate = Assembly.GetExecutingAssembly().GetLinkerTime();
로그인 후 복사

중요 고려 사항: 이 접근 방식은 .NET Core 1.0에 효과적이지만 PE 헤더 형식 변경 가능성으로 인해 이후 .NET Core 버전(1.1 이상)에서는 정확성이 저하될 수 있습니다.

위 내용은 .NET 실행 파일의 빌드 날짜를 프로그래밍 방식으로 어떻게 얻을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿