У меня есть приложение WPF, которое использует пользовательский элемент управления Winforms, который я создал с помощью C ++ / CLI. Когда мое приложение выполняет синтаксический анализ 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.
Я прокомментировал свой элемент управления Winforms в XAML, и все загружается нормально. Я подумал, что, возможно, конструктор для моего элемента управления делает что-то плохое, поэтому я установил в нем точку останова, но точка останова не активируется, когда я запускаю приложение, и никогда не срабатывает, что, как я понимаю, означает DLL содержащий эту строку не загружается. Что, скорее всего, вызовет исключение при создании экземпляра объекта типа в DLL - тело конструктора объекта не может быть найдено.
В прошлом я успешно делал это в другом проекте, поэтому я извлек пользовательский элемент управления WinForms из этого приложения и создал его в XAML, и все работает нормально.
Так что-то в этой DLL. У меня есть ссылка на DLL в моем приложении WPF C #, и когда я загружаю DLL в Object Browser, все необходимые классы и пространства имен отображаются нормально. Приложение прекрасно компилируется, проблема просто обнаруживается при разборе 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>