218

C# 的异常类有一个源属性,默认设置为程序集的名称。
有没有另一种方法来获取这个确切的字符串(不解析不同的字符串)?

我尝试了以下方法:

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

5 回答 5

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

或者

typeof(Program).Assembly.GetName().Name;
于 2010-11-24T11:30:10.493 回答
9

我使用大会来设置表单的标题,如下所示:

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;
}
于 2012-05-03T13:32:22.733 回答
3

您可以使用AssemblyName该类来获取程序集名称,前提是您具有程序集的全名:

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

或者

AssemblyName.GetAssemblyName(e.Source).Name

MSDN 参考 - AssemblyName 类

于 2015-06-15T11:53:39.767 回答
3

您可以尝试使用该System.Reflection.AssemblyTitleAttribute.Title属性的代码:

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

于 2016-06-19T03:13:59.377 回答
1

Assembly.GetExecutingAssembly().Location

于 2018-06-04T22:41:31.553 回答