사용자 친화적인 방식으로 빌드 날짜 표시
애플리케이션의 빌드 세부정보를 표시할 때는 사용자가 이해하기 쉬운 형식으로 표시하는 것이 중요합니다. 대부분의 사용자는 빌드 번호보다 최신 버전이 있는지 여부에 더 관심을 갖습니다.
빌드 번호 및 날짜 조회
Assembly.GetExecutingAssembly().GetName().Version.ToString()
을 사용하여 직접 빌드 번호를 얻을 수도 있지만, 빌드 날짜를 얻으려면 다른 접근 방식이 필요합니다.
링커 타임스탬프 검색
빌드 날짜를 결정하는 가장 신뢰할 수 있는 방법은 실행 파일의 PE 헤더에서 링커 타임스탬프를 검색하는 것입니다. 이 타임스탬프는 실행 파일이 빌드된 시간을 나타냅니다.
링커 타임스탬프를 추출하는 C# 코드
Joe Spivey는 링커 타임스탬프를 추출하기 위한 C# 코드 조각을 제공했습니다.
<code class="language-csharp">public static DateTime GetLinkerTime(this Assembly assembly, TimeZoneInfo target = null) { var filePath = assembly.Location; const int c_PeHeaderOffset = 60; const int c_LinkerTimestampOffset = 8; var buffer = new byte[2048]; using (var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read)) stream.Read(buffer, 0, 2048); var offset = BitConverter.ToInt32(buffer, c_PeHeaderOffset); var secondsSince1970 = BitConverter.ToInt32(buffer, offset + c_LinkerTimestampOffset); var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); var linkTimeUtc = epoch.AddSeconds(secondsSince1970); var tz = target ?? TimeZoneInfo.Local; var localTime = TimeZoneInfo.ConvertTimeFromUtc(linkTimeUtc, tz); return localTime; }</code>
사용예
현지 시간으로 빌드 날짜를 검색하려면 다음 코드를 사용하세요.
<code class="language-csharp">var linkTimeLocal = Assembly.GetExecutingAssembly().GetLinkerTime();</code>
.NET Core에 대한 지침
이 방법은 .NET Core 1.0에서 작동하지만 .NET Core 1.1 이후에는 더 이상 사용되지 않으며 잘못된 결과가 발생할 수 있습니다.
위 내용은 내 애플리케이션에서 빌드 번호 대신 사용자에게 친숙한 빌드 날짜를 표시하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!