【问题标题】:Troubleshooting system.io.fileloadexceptionsystem.io.fileloadexception 故障排除
【发布时间】:2008-11-17 14:02:43
【问题描述】:

我有一个 .net 3.5 WinForms 应用程序在我的机器上运行良好,但在另一台机器上它立即崩溃并出现 system.io.fileloadexception。不幸的是,没有关于哪个文件加载失败的详细信息,所以我不知道问题到底出在哪里。

我相信我知道它可能是哪一个(SQL Server Compact 版本),但在我漫无目的地寻找之前,我想知道除了使用来自 SysInternals 的 FileMon 之外,是否有适当的方法来找出导致 fileloadexception 的原因。

唯一的错误信息是:

EventType clr20r3, P1 myapplication.exe, P2 2.1.0.0, P3 490eca78, P4 myapplication, P5 2.1.0.0, P6 490eca78, P7 2e, P8 21, P9 system.io.fileloadexception, P10 NIL。

【问题讨论】:

    标签: .net


    【解决方案1】:

    开启fusion logging

    来自 Brad Wilson 的This blog entry 提供了有关如果失败该怎么办的信息......

    【讨论】:

    • 我完全错过了那个融合记录器。它在几分钟内解决了我的问题,因为日志非常有用。 FUSLOGVW.exe 可以直接复制到机器上(不需要 .net SDK),并且可以通过它设置日志记录设置。魔法。谢谢!
    • 谢谢,我遇到了和迈克尔一样的异常,记录器帮助我在几分钟内解决了问题!
    【解决方案2】:

    您可以尝试使您的 Main() 方法更加健壮以捕获(并显示)异常...like so

    问题通常是太多代码进入最外层的Main() 方法。 JIT 必须能够完全理解Main(),否则没有您的代码可以运行。通过使Main() 更简单,您就有机会。在链接的示例中,如果MainCore() 失败:很好,我们仍然可以捕获Main() 中的异常。

    这是可行的,因为 JIT 是在逐个方法的基础上完成的......即 MainCore() 在被调用之前不会被 JIT 处理,此时我们已经有了 try/catch。

    【讨论】:

      【解决方案3】:

      挂钩并记录AppDomain.AssemblyResolve

      【讨论】:

        【解决方案4】:

        获取 Microsoft 调试工具 SDK,并使用 windbg 或 cordbg 附加并运行您的应用程序。如果不能查明问题,这应该至少可以为您提供问题所在的线索。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-07-15
          • 2010-11-30
          • 2021-09-11
          • 2012-02-18
          • 2011-03-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多