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

Antworten:

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

oder

typeof(Program).Assembly.GetName().Name;
Jaster
quelle
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;
}
Jim Lahman
quelle
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;


quelle
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

kiran
quelle
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
0

Assembly.GetExecutingAssembly (). Speicherort

ivan.ukr
quelle