54 lines
1.4 KiB
C#
54 lines
1.4 KiB
C#
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();
|
|
}
|
|
}
|