.NET 실행 파일에서 빌드 날짜 추출
많은 개발자가 빌드 번호에만 액세스할 수 있으므로 .NET 실행 파일의 빌드 날짜를 프로그래밍 방식으로 결정하는 것은 까다로울 수 있습니다. 이 문서에서는 PE 헤더에 포함된 타임스탬프를 활용하여 C#을 사용하여 이 정보를 검색하는 강력한 방법을 자세히 설명합니다.
PE 헤더 타임스탬프 활용
PE(Portable Executable) 헤더에는 실행 파일의 링크 시간을 반영하는 타임스탬프가 저장됩니다. Joe Spivey의 C# 코드는 이에 액세스하는 편리한 방법을 제공합니다.
<code class="language-csharp">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; }</code>
사용 예:
<code class="language-csharp">DateTime buildDate = Assembly.GetExecutingAssembly().GetLinkerTime();</code>
중요 고려 사항: 이 접근 방식은 .NET Core 1.0에 효과적이지만 PE 헤더 형식 변경 가능성으로 인해 이후 .NET Core 버전(1.1 이상)에서는 정확성이 저하될 수 있습니다.
위 내용은 .NET 실행 파일의 빌드 날짜를 프로그래밍 방식으로 어떻게 얻을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!