获取程序集名称

Pat*_*ick 176 .net c# reflection assemblyinfo

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"
}
Run Code Online (Sandbox Code Playgroud)

Jas*_*ter 324

System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
Run Code Online (Sandbox Code Playgroud)

要么

typeof(Program).Assembly.GetName().Name;
Run Code Online (Sandbox Code Playgroud)

  • 实际上它应该是typeof(any).GetTypeInfo().Assembly (3认同)
  • @sgmoore 在我发表评论时,dotnet core 2.0 仍然是新的,并且 dotnet core 1.0 中的 TypeInfo 对象中存在 `Assembly` 属性,这就是为什么 `GetTypeInfo()` 仍然需要,我认为我的现在也是这样过时的做法 (2认同)

kir*_*ran 11

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

AssemblyName.GetAssemblyName(Assembly.GetExecutingAssembly().Location).Name
Run Code Online (Sandbox Code Playgroud)

或者

AssemblyName.GetAssemblyName(e.Source).Name
Run Code Online (Sandbox Code Playgroud)

MSDN 参考 - AssemblyName 类

  • 由于 GetAssemblyName 方法的参数,我收到错误。我认为它应该是 `Assembly.GetExecutingAssembly().Location` 而不是 `Assembly.GetExecutingAssembly().FullName`。 (4认同)

Jim*_*man 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;
}
Run Code Online (Sandbox Code Playgroud)

  • 很高兴你不是从 Office 插件中调用它 - GetEntryAssembly() 将返回 null (2认同)