La détermination de la date de build de votre application est essentielle pour que les utilisateurs puissent déterminer s'ils disposent de la dernière version. Bien que l’affichage du numéro de build soit courant, il fournit généralement peu d’informations. Cet article explore les moyens d'extraire par programme la date de construction et de l'afficher dans un format convivial.
Contrairement au numéro de build, il n'existe aucun moyen direct de récupérer la date de build à partir des métadonnées de l'assembly. Cependant, une méthode fiable consiste à extraire l’horodatage de l’éditeur de liens intégré dans l’en-tête PE de l’exécutable. Le code C# suivant illustre cette technique :
<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>
Pour utiliser cette méthode, appelez simplement GetLinkerTime() sur l'assembly en cours d'exécution :
<code class="language-c#">var linkTimeLocal = Assembly.GetExecutingAssembly().GetLinkerTime();</code>
Veuillez noter que cette méthode ne fonctionnera pas correctement après .NET Core 1.1. L'horodatage de l'éditeur de liens extrait fournira une année aléatoire comprise entre 1900 et 2020.
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!