91 lines
3.4 KiB
C#
91 lines
3.4 KiB
C#
using System;
|
|
using System.Reflection;
|
|
using System.Runtime.InteropServices;
|
|
using System.Resources;
|
|
|
|
namespace ASCOM.Meade.net
|
|
{
|
|
public class AssemblyInfo
|
|
{
|
|
// The assembly information values.
|
|
public string Title = "", Description = "", Company = "",
|
|
Product = "", Copyright = "", Trademark = "",
|
|
AssemblyVersion = "", FileVersion = "", Guid = "",
|
|
NeutralLanguage = "";
|
|
public bool IsComVisible;
|
|
|
|
// Return a particular assembly attribute value.
|
|
public static T GetAssemblyAttribute<T>(Assembly assembly)
|
|
where T : Attribute
|
|
{
|
|
// Get attributes of this type.
|
|
object[] attributes =
|
|
assembly.GetCustomAttributes(typeof(T), true);
|
|
|
|
// If we didn't get anything, return null.
|
|
if ((attributes == null) || (attributes.Length == 0))
|
|
return null;
|
|
|
|
// Convert the first attribute value into
|
|
// the desired type and return it.
|
|
return (T)attributes[0];
|
|
}
|
|
|
|
// Constructors.
|
|
public AssemblyInfo()
|
|
: this(Assembly.GetExecutingAssembly())
|
|
{
|
|
}
|
|
|
|
public AssemblyInfo(Assembly assembly)
|
|
{
|
|
// Get values from the assembly.
|
|
AssemblyTitleAttribute titleAttr =
|
|
GetAssemblyAttribute<AssemblyTitleAttribute>(assembly);
|
|
if (titleAttr != null) Title = titleAttr.Title;
|
|
|
|
AssemblyDescriptionAttribute assemblyAttr =
|
|
GetAssemblyAttribute<AssemblyDescriptionAttribute>(assembly);
|
|
if (assemblyAttr != null) Description =
|
|
assemblyAttr.Description;
|
|
|
|
AssemblyCompanyAttribute companyAttr =
|
|
GetAssemblyAttribute<AssemblyCompanyAttribute>(assembly);
|
|
if (companyAttr != null) Company = companyAttr.Company;
|
|
|
|
AssemblyProductAttribute productAttr =
|
|
GetAssemblyAttribute<AssemblyProductAttribute>(assembly);
|
|
if (productAttr != null) Product = productAttr.Product;
|
|
|
|
AssemblyCopyrightAttribute copyrightAttr =
|
|
GetAssemblyAttribute<AssemblyCopyrightAttribute>(assembly);
|
|
if (copyrightAttr != null) Copyright = copyrightAttr.Copyright;
|
|
|
|
AssemblyTrademarkAttribute trademarkAttr =
|
|
GetAssemblyAttribute<AssemblyTrademarkAttribute>(assembly);
|
|
if (trademarkAttr != null) Trademark = trademarkAttr.Trademark;
|
|
|
|
var version = assembly.GetName().Version;
|
|
AssemblyVersion = $"{version.Major}.{version.Minor}.{version.Build}.{version.Revision}";
|
|
|
|
|
|
AssemblyFileVersionAttribute fileVersionAttr =
|
|
GetAssemblyAttribute<AssemblyFileVersionAttribute>(assembly);
|
|
if (fileVersionAttr != null) FileVersion =
|
|
fileVersionAttr.Version;
|
|
|
|
GuidAttribute guidAttr = GetAssemblyAttribute<GuidAttribute>(assembly);
|
|
if (guidAttr != null) Guid = guidAttr.Value;
|
|
|
|
NeutralResourcesLanguageAttribute languageAttr =
|
|
GetAssemblyAttribute<NeutralResourcesLanguageAttribute>(assembly);
|
|
if (languageAttr != null) NeutralLanguage =
|
|
languageAttr.CultureName;
|
|
|
|
ComVisibleAttribute comAttr =
|
|
GetAssemblyAttribute<ComVisibleAttribute>(assembly);
|
|
if (comAttr != null) IsComVisible = comAttr.Value;
|
|
}
|
|
}
|
|
}
|