Obteniendo el nombre del ensamblado


191

La clase de excepción de C # tiene una propiedad de origen que se establece en el nombre del ensamblado de forma predeterminada.
¿Hay otra forma de obtener esta cadena exacta (sin analizar una cadena diferente)?

He probado lo siguiente:

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

Respuestas:


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

o

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

VS muestra errores al resolver usos. Puede usar Assembly.GetEntryAssembly (). GetName (). Name;
Butsaty

3
En realidad, debería ser typeof (any) .GetTypeInfo (). Assembly
Thaina

7

Utilizo la Asamblea para establecer el título del formulario como tal:

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
Alégrate de no estar llamando desde un complemento de Office, donde GetEntryAssembly () devolverá nulo
PandaWood

3

Puedes probar este código que usa la System.Reflection.AssemblyTitleAttribute.Titlepropiedad:

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


2

Puede usar la AssemblyNameclase para obtener el nombre del ensamblado, siempre que tenga el nombre completo del ensamblado:

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

o

AssemblyName.GetAssemblyName(e.Source).Name

Referencia de MSDN - Clase AssemblyName


2
Obtuve un error debido al parámetro del método GetAssemblyName. Creo que debería haber sido en Assembly.GetExecutingAssembly().Locationlugar de Assembly.GetExecutingAssembly().FullName.
uzay95

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.