Извлечь AssemblyCompanyName из библиотеки классов
Я хотел бы получить атрибут AssemblyCompany из проекта WinForm внутри моей библиотеки классов С#. В WinForms я могу получить эту информацию, используя:
Application.CompanyName;
Однако я не могу найти способ получить эту же информацию, используя библиотеку классов. Любая помощь, которую вы могли бы предоставить, была бы замечательной!
Ответы
Ответ 1
Чтобы получить сборку, в которой на самом деле находится ваш текущий код (код библиотеки классов), и прочитайте его атрибут компании:
Assembly currentAssem = typeof(CurrentClass).Assembly;
object[] attribs = currentAssem.GetCustomAttributes(typeof(AssemblyCompanyAttribute), true);
if(attribs.Length > 0)
{
string company = ((AssemblyCompanyAttribute)attribs[0]).Company
}
Ответ 2
Вы можете использовать класс FileVersionInfo, чтобы получить намного больше CompanyName.
Dim info = FileVersionInfo.GetVersionInfo(GetType(AboutPage).Assembly.Location)
Dim companyName = info.CompanyName
Dim copyright = info.LegalCopyright
Dim fileVersion = info.FileVersion
Ответ 3
Assembly assembly = typeof(CurrentClass).GetAssembly();
AssemblyCompanyAttribute companyAttribute = AssemblyCompanyAttribute.GetCustomAttribute(assembly, typeof(AssemblyCompanyAttribute)) as AssemblyCompanyAttribute;
if (companyAttribute != null)
{
string companyName = companyAttribute.Company;
// Do something
}
Ответ 4
Вы также можете получить его с помощью LINQ:
public static string GetAssemblyCompany<T>(){
string company = (from Attribute a in (typeof(T).Assembly.GetCustomAttributes())
where a is AssemblyCompanyAttribute
select ((AssemblyCompanyAttribute)a).Company).FirstOrDefault();
return company;
}
Ответ 5
Это отличный способ получить то, что вы ищете в одной строке:
string company = ((AssemblyCompanyAttribute)Attribute.GetCustomAttribute(Assembly.GetExecutingAssembly(), typeof(AssemblyCompanyAttribute), false)).Company;