Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Memaparkan Tarikh Binaan Aplikasi Saya Secara Pengaturcaraan?

Bagaimanakah Saya Boleh Memaparkan Tarikh Binaan Aplikasi Saya Secara Pengaturcaraan?

Barbara Streisand
Lepaskan: 2025-01-22 01:16:09
asal
965 orang telah melayarinya

How Can I Programmatically Display My Application's Build Date?

Tunjukkan Tarikh Binaan: Panduan Lengkap

Menentukan tarikh binaan aplikasi anda adalah penting untuk pengguna menentukan sama ada mereka mempunyai versi terkini. Walaupun memaparkan nombor binaan adalah perkara biasa, ia biasanya memberikan sedikit maklumat. Artikel ini meneroka cara untuk mengekstrak tarikh binaan secara pemrograman dan memaparkannya dalam format yang mesra pengguna.

Dapatkan tarikh binaan

Tidak seperti nombor binaan, tiada cara langsung untuk mendapatkan semula tarikh binaan daripada metadata pemasangan. Walau bagaimanapun, kaedah yang boleh dipercayai adalah untuk mengekstrak cap masa pemaut yang dibenamkan dalam pengepala PE bagi boleh laku. Kod C# berikut menunjukkan teknik ini:

<code class="language-c#">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>
Salin selepas log masuk

Contoh penggunaan

Untuk menggunakan kaedah ini, hanya panggil GetLinkerTime() pada pemasangan pelaksana:

<code class="language-c#">var linkTimeLocal = Assembly.GetExecutingAssembly().GetLinkerTime();</code>
Salin selepas log masuk

Arahan tentang .NET Core

Sila ambil perhatian bahawa kaedah ini tidak akan berfungsi dengan betul selepas .NET Core 1.1. Cap masa pemaut yang diekstrak akan memberikan tahun rawak dalam julat 1900-2020.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memaparkan Tarikh Binaan Aplikasi Saya Secara Pengaturcaraan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan