Подтвердить что ты не робот

Извлечь AssemblyCompanyName из библиотеки классов

Я хотел бы получить атрибут AssemblyCompany из проекта WinForm внутри моей библиотеки классов С#. В WinForms я могу получить эту информацию, используя:

Application.CompanyName;

Однако я не могу найти способ получить эту же информацию, используя библиотеку классов. Любая помощь, которую вы могли бы предоставить, была бы замечательной!

4b9b3361

Ответ 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;