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>