Получение названия сборки


191

Класс исключений в C # имеет свойство source, которое по умолчанию установлено на имя сборки.
Есть ли другой способ получить эту точную строку (без разбора другой строки)?

Я пробовал следующее:

catch(Exception e)
{
    string str = e.Source;         
    //"EPA" - what I want               
    str = System.Reflection.Assembly.GetExecutingAssembly().FullName;
    //"EPA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
    str = typeof(Program).FullName;
    //"EPA.Program"
    str = typeof(Program).Assembly.FullName;
    //"EPA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
    str = typeof(Program).Assembly.ToString();
    //"EPA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
    str = typeof(Program).AssemblyQualifiedName;
    //"EPA.Program, EPA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
}

Ответы:


350
System.Reflection.Assembly.GetExecutingAssembly().GetName().Name

или

typeof(Program).Assembly.GetName().Name;

VS показывают ошибки при разрешении использования. Вы можете использовать Assembly.GetEntryAssembly (). GetName (). Name;
Буцаты

3
На самом деле это должен быть typeof (любой) .GetTypeInfo (). Сборка
Thaina

7

Я использую сборку, чтобы установить заголовок формы следующим образом:

private String BuildFormTitle()
{
    String AppName = System.Reflection.Assembly.GetEntryAssembly().GetName().Name;
    String FormTitle = String.Format("{0} {1} ({2})", 
                                     AppName, 
                                     Application.ProductName, 
                                     Application.ProductVersion);
    return FormTitle;
}

1
Просто будьте рады, что вы не звоните изнутри надстройки Office - где GetEntryAssembly () вернет
ноль

3

Вы можете попробовать этот код, который использует System.Reflection.AssemblyTitleAttribute.Titleсвойство:

((AssemblyTitleAttribute)Attribute.GetCustomAttribute(Assembly.GetExecutingAssembly(), typeof(AssemblyTitleAttribute), false)).Title;


2

Вы можете использовать AssemblyNameкласс для получения имени сборки при условии, что у вас есть полное имя сборки:

AssemblyName.GetAssemblyName(Assembly.GetExecutingAssembly().FullName).Name

или

AssemblyName.GetAssemblyName(e.Source).Name

Справочник по MSDN - класс AssemblyName


2
Я получил ошибку из-за параметра метода GetAssemblyName. Я думаю, что это должно было быть Assembly.GetExecutingAssembly().Locationвместо Assembly.GetExecutingAssembly().FullName.
uzay95

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.