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

Jawaban:


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

atau

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

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

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;


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


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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.