Microsoft-ui-xaml: Los mensajes de excepción de análisis XAML no son útiles

Creado en 19 ago. 2020  ·  3Comentarios  ·  Fuente: microsoft/microsoft-ui-xaml

@Stevenbrix me pidió que abriera un problema cuando mencioné esto en el anuncio de la llamada comunitaria del 19 de agosto. Tenga en cuenta que en mi caso, estaba creando aplicaciones de escritorio WinUI.

Encuentro que los mensajes de excepción de análisis XAML son casi inútiles cuando trato de corregir errores de análisis. Tengo una amplia experiencia en el desarrollo de aplicaciones WPF, por lo que no es como si fuera nuevo en el uso de XAML.

Al intentar transferir un pequeño subconjunto de bibliotecas XAML a WinUI, ni un solo mensaje de excepción ha sido útil para ayudarme a resolver mis problemas. Aunque no he estado registrando un recuento de esos, el siguiente ejemplo es típico de lo que he encontrado.

Ejemplo de mensajes de error para un error XAML simple

Tomemos, por ejemplo, el error que cometí al definir un XAML StaticResource para el tipo "Double". Pensé que podría agregar un uso para System y luego definir el recurso con sys: Double. Como puede ver en el mensaje de excepción a continuación, sería extremadamente difícil saber qué tipo de error de análisis XAML se ha producido. Ni siquiera apunta al ensamblaje que realmente causó el error, y mucho menos tiene una pista cálida de cuál fue el problema. Cuando ocurren problemas como este, tengo que comenzar a retroceder todos y cada uno de los bloques de XAML hasta que el código se ejecute sin excepción. Dado que se tarda mucho más en iniciar una aplicación empaquetada, es un proceso muy tedioso, lento y propenso a errores.

Escribir XAML sin formato es propenso a errores, pero cuando se transfieren cientos de archivos XAML desde WPF, los errores son inevitables. Mi error fue usar sys: Double en lugar de x: Double.

xmlns:sys="using:System"
...
<sys:Double x:Key="DoubleKey">.5</sys:Double>
Microsoft.UI.Xaml.dll!7A6F17CF: (caller: 7A471CB9) Exception(1) tid(85cc) 80004005 Unspecified error
Exception thrown at 0x76119862 in Oceanside.VirtualKeyboard.Sample.App.exe: Microsoft C++ exception: wil::ResultException at memory location 0x00D79C40.
Exception thrown at 0x76119862 in Oceanside.VirtualKeyboard.Sample.App.exe: Microsoft C++ exception: [rethrow] at memory location 0x00000000.
Microsoft.UI.Xaml.dll!7A6F2F43: (caller: 7A4CE21A) ReturnHr(1) tid(85cc) 80004005 Unspecified error
    Msg:[Microsoft.UI.Xaml.dll!7A6F17CF: (caller: 7A471CB9) Exception(1) tid(85cc) 80004005 Unspecified error
] 
Exception thrown: 'Microsoft.UI.Xaml.Markup.XamlParseException' in winrt.runtime.dll
WinRT information: Could not create a new view because the main window has not yet been created
An exception of type 'Microsoft.UI.Xaml.Markup.XamlParseException' occurred in winrt.runtime.dll but was not handled in user code
WinRT information: Could not create a new view because the main window has not yet been created
XAML parsing failed.
team-Markup winui3preview

Comentario más útil

De acuerdo, esto también se ha discutido en algunos lugares antes. Sin embargo, no he podido localizar los problemas para vincularlos.

Todos 3 comentarios

De acuerdo, esto también se ha discutido en algunos lugares antes. Sin embargo, no he podido localizar los problemas para vincularlos.

Aquí está el otro problema en el que estaba pensando: https://github.com/microsoft/microsoft-ui-xaml/issues/2350 y un comentario https://github.com/microsoft/microsoft-ui-xaml/issues/ 2861 # comentario de emisión -656951583.

Gracias por el seguimiento @jtbrower y @robloo , perdón por la lenta respuesta. Esto debería mejorarse en 16.8 y 16.9 Preview 1, donde Microsoft.UI.Xaml.Markup.XamlParseException debería estar habilitado de forma predeterminada.

@robloo gracias por vincular esos otros problemas. Sé que la experiencia aún no es excelente, por lo que no voy a cerrar este problema, ya que podemos mantenerlo abierto para rastrear esto.

¿Fue útil esta página
0 / 5 - 0 calificaciones