Montaj adını alma


191

C # özel durum sınıfı, varsayılan olarak derleme adına ayarlanmış bir kaynak özelliğine sahiptir.
Bu dizeyi almanın başka bir yolu var mı (farklı bir dizeyi ayrıştırmadan)?

Aşağıdakileri denedim:

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

Yanıtlar:


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

veya

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

VS çözüm kullanımlarında hataları gösterir. Assembly.GetEntryAssembly (). GetName (). Name;
Butsaty

3
. Aslında typeof (herhangi bir) .GetTypeInfo () Meclis olmalıdır
Thaina

7

Meclis'i formun başlığını şu şekilde ayarlamak için kullanıyorum:

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 Eklentisi içinden GetEntryAssembly () öğesinin null değerini döndürdüğünüz için mutlu olmanız yeterli
aramıyorum memnunum PandaWood

3

Bu System.Reflection.AssemblyTitleAttribute.Titleözelliği kullanan bu kodu deneyebilirsiniz :

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


2

AssemblyNameDerleme için tam adınız olması koşuluyla, derleme adını almak için sınıfı kullanabilirsiniz :

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

veya

AssemblyName.GetAssemblyName(e.Source).Name

MSDN Başvurusu - AssemblyName Sınıfı


2
GetAssemblyName yönteminin parametresi nedeniyle hata aldım. Bunun Assembly.GetExecutingAssembly().Locationyerine olması gerektiğini düşünüyorum Assembly.GetExecutingAssembly().FullName.
uzay95

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.