我有一个 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>