Paparkan tarikh binaan dengan cara yang mesra pengguna
Apabila memaparkan butiran binaan aplikasi anda, adalah penting untuk membentangkannya dalam format yang mudah difahami oleh pengguna. Kebanyakan pengguna kurang mengambil berat tentang nombor binaan dan lebih banyak tentang mengetahui sama ada mereka mempunyai versi terkini.
Nombor binaan pertanyaan dan tarikh
Walaupun boleh mendapatkan nombor binaan terus menggunakan Assembly.GetExecutingAssembly().GetName().Version.ToString()
, mendapatkan tarikh binaan memerlukan pendekatan yang berbeza.
Dapatkan cap masa pemaut
Cara paling boleh dipercayai untuk menentukan tarikh binaan ialah mendapatkan cap masa pemaut dalam pengepala PE boleh laku. Cap masa ini mewakili masa boleh laku dibina.
Kod C# untuk mengekstrak cap masa pemaut
Joe Spivey menyediakan coretan kod C# untuk mengekstrak cap masa pemaut:
<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>
Contoh penggunaan
Untuk mendapatkan semula tarikh binaan dalam waktu tempatan, gunakan kod berikut:
<code class="language-csharp">var linkTimeLocal = Assembly.GetExecutingAssembly().GetLinkerTime();</code>
Arahan tentang .NET Core
Walaupun kaedah ini berfungsi dalam .NET Core 1.0, kaedah ini ditamatkan selepas .NET Core 1.1 dan mungkin menghasilkan keputusan yang salah.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memaparkan Tarikh Binaan Mesra Pengguna Daripada Nombor Binaan dalam Aplikasi Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!