ホームページ > バックエンド開発 > C++ > アプリケーションでビルド番号の代わりにわかりやすいビルド日を表示するにはどうすればよいですか?

アプリケーションでビルド番号の代わりにわかりやすいビルド日を表示するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-22 01:11:12
オリジナル
762 人が閲覧しました

How Can I Display a User-Friendly Build Date Instead of a Build Number in My Application?

ユーザーフレンドリーな方法でビルド日付を表示します

アプリケーションのビルドの詳細を表示するときは、ユーザーが理解しやすい形式で表示することが重要です。ほとんどのユーザーは、ビルド番号よりも、最新バージョンがあるかどうかを知ることに関心があります。

ビルド番号と日付のクエリ

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート