Obtendo o nome da montagem


190

A classe de exceção do C # possui uma propriedade de origem que é definida como o nome do assembly por padrão.
Existe outra maneira de obter essa sequência exata (sem analisar uma sequência diferente)?

Eu tentei o seguinte:

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

Respostas:


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

ou

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

O VS mostra erros ao resolver os usos. Você pode usar Assembly.GetEntryAssembly (). GetName (). Name;
Butsaty 30/05

3
Na verdade, ele deve ser typeof (any). GetTypeInfo (). Assembly
Thaina

6

Eu uso a Assembléia para definir o título do formulário da seguinte forma:

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
Basta ser feliz que você não está pedindo que a partir de um suplemento do escritório - onde GetEntryAssembly () retornará null
PandaWood

3

Você pode tentar este código que usa a System.Reflection.AssemblyTitleAttribute.Titlepropriedade:

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


2

Você pode usar a AssemblyNameclasse para obter o nome da montagem, desde que tenha o nome completo da montagem:

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

ou

AssemblyName.GetAssemblyName(e.Source).Name

Referência MSDN - Classe AssemblyName


2
Eu recebi um erro por causa do parâmetro do método GetAssemblyName. Eu acho que deveria ter sido em Assembly.GetExecutingAssembly().Locationvez de Assembly.GetExecutingAssembly().FullName.
uzay95

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.