LenovoLegionToolkit
36 строк · 1.2 Кб
1using System;2using System.Globalization;3using System.Reflection;4
5namespace LenovoLegionToolkit.Lib.Extensions;6
7public static class AssemblyExtensions8{
9public static DateTime? GetBuildDateTime(this Assembly assembly)10{11const string buildVersionMetadataPrefix = "+build";12
13var attribute = assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>();14if (attribute?.InformationalVersion == null)15return null;16
17var value = attribute.InformationalVersion;18var index = value.IndexOf(buildVersionMetadataPrefix, StringComparison.InvariantCultureIgnoreCase);19if (index <= 0)20return null;21
22value = value[(index + buildVersionMetadataPrefix.Length)..];23
24// ReSharper disable once StringLiteralTypo25if (DateTime.TryParseExact(value, "yyyyMMddHHmmss", CultureInfo.InvariantCulture, DateTimeStyles.None, out var result))26return result;27
28return null;29}30
31public static string? GetBuildDateTimeString(this Assembly assembly)32{33// ReSharper disable once StringLiteralTypo34return GetBuildDateTime(assembly)?.ToString("yyyyMMddHHmmss");35}36}
37