如何在 C# 中获取反射程序集的异常 StackTrace

How to get exception StackTrace for reflected assemblies in c#

我有一个简单的 c# .net windows 服务,它在 运行 时间加载程序集并在其中执行一个方法。如果出现错误,我会向自己发送一封电子邮件,其中包含堆栈跟踪。问题是堆栈跟踪只给我程序的堆栈,而不是反射程序集的堆栈。有没有办法得到它。这是代码

try
{
  var filename = "abc.dll";
  var assemblyToLoad = Assembly.LoadFile(filename);
  var args = new object[]
                        {
                         "FirstName","LastName"
                        };

  var classToLoad = assemblyToLoad.CreateInstance("abc.myclass", false,
                BindingFlags.CreateInstance, null, args, null, null);

  var value = classToLoad.GetType().GetMethod("Run").Invoke(classToLoad, null);

}

catch(Exception ex)
{

  SendMail(ex.StackTrace);

}

您似乎在尝试重新发明轮子,既然您可以实现一个众所周知的强大框架,为什么还要使用这种基本的日志记录方式?

我可以建议您看一下 Elmah 它是我使用过的最简单的日志记录框架之一。

感谢 dartonw。他的建议奏效了。我觉得我好笨。我只需要将反射程序集的 .pdb 文件放到 bin 文件夹中,然后查看 innerException 的堆栈跟踪以获取反射程序集的堆栈跟踪。