Отримання назви збірки


191

Клас винятків C # має властивість джерела, яке встановлено за назвою збірки за замовчуванням.
Чи є інший спосіб отримати цей точний рядок (без розбору іншого рядка)?

Я спробував таке:

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 (). Ім'я;
Буцаті

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 () повернеться до нуля
PandaWood

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.