Die Bestimmung des Erstellungsdatums Ihrer Anwendung ist für Benutzer von entscheidender Bedeutung, um festzustellen, ob sie über die neueste Version verfügen. Obwohl die Anzeige der Build-Nummer üblich ist, liefert sie in der Regel nur wenige Informationen. In diesem Artikel werden Möglichkeiten untersucht, das Erstellungsdatum programmgesteuert zu extrahieren und in einem benutzerfreundlichen Format anzuzeigen.
Im Gegensatz zur Build-Nummer gibt es keine direkte Möglichkeit, das Build-Datum aus den Metadaten der Assembly abzurufen. Eine zuverlässige Methode besteht jedoch darin, den im PE-Header der ausführbaren Datei eingebetteten Linker-Zeitstempel zu extrahieren. Der folgende C#-Code demonstriert diese Technik:
<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>
Um diese Methode zu verwenden, rufen Sie einfach GetLinkerTime() auf der ausführenden Assembly auf:
<code class="language-c#">var linkTimeLocal = Assembly.GetExecutingAssembly().GetLinkerTime();</code>
Bitte beachten Sie, dass diese Methode nach .NET Core 1.1 nicht mehr ordnungsgemäß funktioniert. Der extrahierte Linker-Zeitstempel liefert ein zufälliges Jahr im Bereich 1900–2020.
Das obige ist der detaillierte Inhalt vonWie kann ich das Erstellungsdatum meiner Anwendung programmgesteuert anzeigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!