Mendapatkan nama majelis

191

Kelas pengecualian C # memiliki properti sumber yang ditetapkan ke nama majelis secara default.
Apakah ada cara lain untuk mendapatkan string yang tepat ini (tanpa menguraikan string yang berbeda)?

Saya sudah mencoba yang berikut ini:

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
sumber

Jawaban:

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

atau

typeof(Program).Assembly.GetName().Name;
Jaster
sumber
VS menunjukkan kesalahan saat menyelesaikan penggunaan. Anda dapat menggunakan Assembly.GetEntryAssembly (). GetName (). Name;
Butsaty
3
Sebenarnya itu harus typeof (any) .GetTypeInfo (). Assembly
Thaina
7

Saya menggunakan Majelis untuk mengatur judul formulir sebagai berikut:

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
sumber
1
Hanya senang Anda tidak memanggil itu dari dalam Addin Office - di mana GetEntryAssembly () akan mengembalikan nol
PandaWood
3

Anda dapat mencoba kode ini yang menggunakan System.Reflection.AssemblyTitleAttribute.Titleproperti:

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


sumber
2

Anda dapat menggunakan AssemblyNamekelas untuk mendapatkan nama majelis, asalkan Anda memiliki nama lengkap untuk majelis:

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

atau

AssemblyName.GetAssemblyName(e.Source).Name

Referensi MSDN - Kelas AssemblyName

kiran
sumber
2
Saya mendapat kesalahan karena parameter metode GetAssemblyName. Saya pikir itu seharusnya Assembly.GetExecutingAssembly().Locationbukan Assembly.GetExecutingAssembly().FullName.
uzay95
0

Assembly.GetExecutingAssembly (). Location

ivan.ukr
sumber