Baugruppenname abrufen


190

Die Ausnahmeklasse von C # verfügt über eine Quelleneigenschaft, die standardmäßig auf den Namen der Assembly festgelegt ist.
Gibt es eine andere Möglichkeit, diese genaue Zeichenfolge zu erhalten (ohne eine andere Zeichenfolge zu analysieren)?

Ich habe folgendes versucht:

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

Antworten:


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

oder

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

VS zeigt Fehler bei der Auflösung von Verwendungen. Sie können Assembly.GetEntryAssembly (). GetName (). Name verwenden.
Butsaty

3
Eigentlich sollte es typeof (any) sein .GetTypeInfo (). Assembly
Thaina

6

Ich benutze die Assembly, um den Titel des Formulars als solchen festzulegen:

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
Seien Sie nur froh, dass Sie das nicht in einem Office-Add-In aufrufen - wo GetEntryAssembly () null
zurückgibt

3

Sie können diesen Code ausprobieren, der die System.Reflection.AssemblyTitleAttribute.TitleEigenschaft verwendet:

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


2

Sie können die AssemblyNameKlasse verwenden, um den Assemblynamen abzurufen, sofern Sie den vollständigen Namen für die Assembly haben:

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

oder

AssemblyName.GetAssemblyName(e.Source).Name

MSDN-Referenz - AssemblyName-Klasse


2
Ich habe einen Fehler aufgrund des Parameters der GetAssemblyName-Methode erhalten. Ich denke es hätte Assembly.GetExecutingAssembly().Locationstatt sein sollen Assembly.GetExecutingAssembly().FullName.
uzay95

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.