gpt4 book ai didi

c# - WPF 抛出异常解析 XAML,其中包含 Winforms 用户控件

转载 作者:太空狗 更新时间:2023-10-29 20:06:45 24 4
gpt4 key购买 nike

我有一个 WPF 应用程序,它使用了我使用 C++/CLI 创建的 Winforms 用户控件。当我的应用程序为我的主窗口解析 XAML 时,它会引发异常。该信息似乎有些缩写,但它说:

A first chance exception of type 'System.Windows.Markup.XamlParseException' occurred in PresentationFramework.dll

Additional information: is not a valid Win32 application. (Exception from HRESULT: 0x800700C1) Error in markup file 'OsgViewer;component/osgviewerwin.xaml' Line 1 Position 9.

我在 XAML 中注释掉了我的 Winforms 控件,一切都加载正常。我认为我的控件的构造函数可能做错了什么,所以我在其中放置了一个断点,但是当我开始运行该应用程序时该断点似乎没有启用,并且从未被击中,我理解这意味着 DLL包含该行的文件未加载。当 DLL 中的某个类型的对象被实例化时,这很可能会导致抛出异常 - 找不到对象的构造函数的主体。

我过去在一个不同的项目上成功地做到了这一点,所以我从那个应用程序中提取了一个不同的 WinForms 用户控件,并在 XAML 中实例化它,一切正常。

所以它是这个 DLL 中的东西。我在我的 WPF C# 应用程序中引用了 DLL,当我在对象浏览器中加载 DLL 时,所有必需的类和命名空间都显示正常。该应用程序编译正常,问题只是在解析 XAML 时出现。有人见过这样的东西吗?关于什么可能导致这种情况的任何想法?调试思路呢?谢谢!

<Window x:Class="OsgViewer.OsgViewerWin"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:int="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
xmlns:myns="clr-namespace:MyGlobalNS.MyNS;assembly=MyAssembly"
...
<int:WindowsFormsHost x:Name="m_Host">
<myns:CMyClass x:Name="m_MyClass" />
</int:WindowsFormsHost>
...
</window>

最佳答案

我遇到过类似的问题(但不是完全相同的错误消息)。似乎 WPF 无法实例化您的 Winforms 用户控件。

挑战在于找出原因。以下是我的建议,您可以尝试:

  1. 检查您是否启用了非托管调试(在项目属性 -> 调试中)
  2. 查明在实现 Winforms 控件的 C++/CLI DLL 中是否存在任何依赖项,以及是否无法解析这些依赖项。
    为了找出对 native DLL 的依赖关系,您应该使用工具 Dependency Walker (depends.exe) . .NET Reflector 将仅检查托管依赖项。
  3. 逐步注释掉 Winforms 用户控件的代码,然后重试。
  4. 使用 Gflags.exe 打开 Loader Snaps(参见 Debugging LoadLibrary Failures)

关于c# - WPF 抛出异常解析 XAML,其中包含 Winforms 用户控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/227581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com