Tengo una aplicación WPF que hace uso de un control de usuario de Winforms que he creado usando C++/CLI. Cuando mi aplicación va a analizar el XAML para mi ventana principal, arroja una excepción. La información parece ser algo abreviada, pero dice:WPF lanzando una excepción que analiza XAML que incluye un control de usuario de Winforms
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.
me comentó mi control de Windows Forms en el XAML y todo carga finos. Pensé que tal vez el constructor de mi control estaba haciendo algo mal, así que puse un punto de interrupción en él, pero el punto de interrupción no parece estar habilitado cuando empiezo a ejecutar la aplicación, y nunca es golpeado, lo que entiendo significa la DLL que contiene esa línea no está cargado. Lo más probable es que provoque una excepción al crear una instancia de un objeto de un tipo en el DLL: no se pudo encontrar el cuerpo del constructor del objeto.
He hecho esto con éxito en un proyecto diferente en el pasado, así que saqué un control de usuario WinForms diferente de esa aplicación, y lo instalé en el XAML, y todo funciona bien.
Esto es algo en esta DLL. Tengo una referencia a la DLL en mi aplicación WPF C#, y cuando cargo la DLL en el Examinador de objetos, todas las clases y espacios de nombres necesarios aparecen bien. La aplicación compila bien, el problema simplemente aparece al analizar el XAML. ¿Alguien ha visto algo como esto? ¿Alguna idea sobre qué podría estar causando esto? Ideas para depurarlo? ¡Gracias!
<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>
pregunta, # 1 debe estar habilitado o no ??? Tengo el mismo error y no está habilitado, ¿debería habilitarlo? –
@macrian: Ha pasado un tiempo desde que escribí mi respuesta, pero creo que debería habilitar la depuración no administrada. De esta forma, verá más salidas en el depurador que podrían ayudarlo a rastrear el problema. – EFrank
Lo sé, en realidad han pasado cuatro años: P gracias por su ayuda: D –