System.Reflection.Assembly的空引用异常

Sco*_*ion 14 c# system.reflection

我开发了一个用于内部电子邮件报告的库.当我从另一个项目中使用该库时(通过添加引用).

它给出NullReferenceException了以下几行.

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

任何想法,为什么大会是空的?

Ali*_*tad 21

特别是在Windows服务中,这是由非托管运行时加载的.

使用:

  Process.GetCurrentProcess().MainModule.FileName
Run Code Online (Sandbox Code Playgroud)

获取非托管入口点文件.


更新

看来你正在寻找这个:

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

  • 好吧,加载器是IIS,不管理.为什么需要EntryAssembly?您可以使用Process.GetCurrentProcess().MainModule.FileName来找出它是哪个非托管入口点. (2认同)

Sco*_*ion 2

问题解决了各位

我在用

Assembly.GetAssembly(ex.TargetSite.DeclaringType.UnderlyingSystemType).GetName().Name 
Run Code Online (Sandbox Code Playgroud)

获取 EntryAssemblyName。
在这种情况下,我已经有一个接受异常“ex”的参数,所以我用它来解决它。

非常感谢大家,特别是@Aliostad

干杯

  • 阿利斯塔已经回答了这个问题。为了获得结果而让程序崩溃并不是一个好的做法。您可以简单地遵循 Aliostad 的更简洁的方法: System.Reflection.Assembly.GetExecutingAssembly().GetName().Name (2认同)