我有一个使用C++/CLI创建的Winforms用户控件的WPF应用程序。当我的应用程序尝试解析主窗口的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>