Afficher la date de construction de manière conviviale
Lors de l'affichage des détails de build de votre application, il est crucial de la présenter dans un format facile à comprendre pour les utilisateurs. La plupart des utilisateurs se soucient moins du numéro de build que de savoir s’ils disposent de la dernière version.
Requête du numéro et de la date du build
Bien qu'il soit possible d'obtenir le numéro de build directement en utilisant Assembly.GetExecutingAssembly().GetName().Version.ToString()
, obtenir la date de build nécessite une approche différente.
Récupérer l'horodatage de l'éditeur de liens
Le moyen le plus fiable de déterminer la date de build est de récupérer l'horodatage de l'éditeur de liens dans l'en-tête PE de l'exécutable. Cet horodatage représente l'heure à laquelle l'exécutable a été créé.
Code C# pour extraire l'horodatage de l'éditeur de liens
Joe Spivey a fourni un extrait de code C# pour extraire l'horodatage de l'éditeur de liens :
<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>
Exemples d'utilisation
Pour récupérer la date de build en heure locale, utilisez le code suivant :
<code class="language-csharp">var linkTimeLocal = Assembly.GetExecutingAssembly().GetLinkerTime();</code>
Instructions sur .NET Core
Bien que cette méthode fonctionne dans .NET Core 1.0, elle est obsolète après .NET Core 1.1 et peut produire des résultats incorrects.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!