【问题标题】:HRException on startup of my C# WPF app我的 C# WPF 应用程序启动时出现 HRException
【发布时间】:2009-02-18 20:43:39
【问题描述】:

我有一个 C# WPF 应用程序在启动时突然抛出异常,我不知道为什么。

异常是一个C++HRException,它发生在CreateInstanceSlow()中的MSCORLIB,它是从CreateInstance()调用的,它是从System.Windows.Markup程序集中的BamlRecordReader.CreateInstanceFromType()调用的。

我从这个应用程序中移动了我的所有程序集,以及我刚刚升级的第三方库,最后让应用程序再次运行(尽管它只是一个 shell)。然后我重新添加了第三方库,没问题,然后重新添加了我的每个程序集,将每个程序集添加为引用,并在我的主应用程序中声明该程序集中定义的类型的变量,这有效 好的

所以我把这一切都吹走了,恢复到签入的内容,我又回到了异常,所以我不认为这是一个找不到的 DLL,或者是在初始化时爆炸的 DLL - 但我不知道是什么。

我尝试降低调用堆栈并查看解析函数,但调试器告诉我,由于堆栈顶部有一个本机框架,我无法检查大部分变量。

我非常感谢有关如何确定在引发异常时实际解析 XAML 的任何提示,以及听取其他遇到类似问题的人的意见。

【问题讨论】:

    标签: c# xaml parsing exception assemblies


    【解决方案1】:

    我将首先确保 VS 启用了本机和托管调试,并且符号服务器正常工作。这至少应该允许堆栈跟踪。

    另一种选择可能是强制进程 dunp 并使用 WinDBG(以及大量涵盖此类调试的博客/书籍阅读)。

    此外,XAML 加载是否是最简单的包装器(即仅足以使用 XamlReader 实例)?

    【讨论】:

    • 感谢您的 cmets!关于 XAML 加载的最后一个问题,我没有完全理解。你能澄清一下吗?
    • 围绕 XAMLReader 类实例的最小包装器(例如控制台应用程序中的一些语句),用于检查 XAML 本身是否存在问题。
    【解决方案2】:

    虽然我仍然希望获得有关如何调试这些异常的提示,但我还是能够追踪到这一点。我的一个 DLL 使用了另一个 DLL 中的一个类,该类的构建不正确(尽管我仍然不确定为什么)。一旦我能够重建该 DLL 和使用它的那个,然后重建我的应用程序,一切正常。但令人沮丧的是,我盲目地在黑暗中刺伤,通过反复试验来找出导致问题的 DLL(以及该 DLL 中的哪个类)。系统唯一能告诉我的就是某处的某个 XAML 中存在某种错误。我应该提一下,我在 C# 应用程序中使用的这些程序集是用 C++/CLI 编写的,并且包含本机 C++ 代码——但我认为这并不是一个真正的互操作问题。所以无论如何,关于如何真正找出真正错误的额外提示将不胜感激!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-08
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 2016-10-15
      相关资源
      最近更新 更多