获取程序集名称


190

C#的异常类具有一个source属性,该属性默认情况下设置为程序集的名称。
是否有另一种方法来获取此确切的字符串(不分析其他字符串)?

我尝试了以下方法:

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

Answers:


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

要么

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

VS在使用解析时显示错误。您可以使用Assembly.GetEntryAssembly()。GetName()。Name;
Butsaty

3
实际上,它应该是typeof(any).GetTypeInfo()。Assembly
Thaina 2013年

6

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

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插件中调用它-GetEntryAssembly()将返回null
PandaWood '18

3

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

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


2

如果AssemblyName您具有程序集的全名,则可以使用该类来获取程序集名称:

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

要么

AssemblyName.GetAssemblyName(e.Source).Name

MSDN参考-AssemblyName类


2
我由于GetAssemblyName方法的参数而出错。我认为应该Assembly.GetExecutingAssembly().Location代替Assembly.GetExecutingAssembly().FullName
uzay95 '16

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.