Maison > développement back-end > C++ > Comment puis-je afficher par programme la date de construction de mon application ?

Comment puis-je afficher par programme la date de construction de mon application ?

Barbara Streisand
Libérer: 2025-01-22 01:16:09
original
964 Les gens l'ont consulté

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

Afficher la date de construction : guide complet

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.

Obtenir la date de construction

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>
Copier après la connexion

Exemples d'utilisation

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>
Copier après la connexion

Instructions sur .NET Core

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal