using System; using System.Reflection; namespace Xylem.Common.Utils.UserAccessCtrl { public struct SoftwareVersion { private SoftwareVersion(Boolean initialize) { Name = "unknown"; MajorV = 0; MinorV = 0; BuildV = 0; VersionString = "?"; AssemblyName = Assembly .GetEntryAssembly()? .GetName(); if (AssemblyName != null) { Name = AssemblyName.Name; var version = AssemblyName.Version; MajorV = version.Major; MinorV = version.Minor; BuildV = version.Build; VersionString = $"{MajorV}.{MinorV}.{BuildV}"; } } public String Name { get; internal set; } public Int32 MajorV { get; internal set; } public Int32 MinorV { get; internal set; } public Int32 BuildV { get; internal set; } public String VersionString { get; } public AssemblyName AssemblyName { get; } public override String ToString() => $"{nameof(Version)}: {VersionString}"; public static SoftwareVersion Current = new SoftwareVersion(true); public static implicit operator String(SoftwareVersion assemblyVersion) => assemblyVersion.ToString(); } }