Files
MeadeGeneric/Meade.net/AssemblyInfo.cs
T
2019-09-28 22:20:21 +01:00

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;
}
}
}