Microsoft-ui-xaml: XAML-Parsing-Ausnahmemeldungen sind nicht nützlich

Erstellt am 19. Aug. 2020  ·  3Kommentare  ·  Quelle: microsoft/microsoft-ui-xaml

Ich wurde von @stevenbrix gebeten, ein Problem zu

Ich finde die XAML-Parsing-Ausnahmemeldungen fast nutzlos, wenn Sie versuchen, Parsing-Fehler zu korrigieren. Ich habe einen umfangreichen Hintergrund in der WPF-Anwendungsentwicklung, daher ist es nicht so, als ob ich neu in der Verwendung von XAML wäre.

Beim Versuch, eine kleine Teilmenge von XAML-Bibliotheken auf WinUI zu portieren, war keine einzige Ausnahmemeldung hilfreich, um meine Probleme zu lösen. Obwohl ich keine Liste davon protokolliert habe, ist das folgende Beispiel typisch für das, was mir begegnet ist.

Beispiel für Fehlermeldungen für einen einfachen XAML-Fehler

Nehmen Sie zum Beispiel den Fehler, den ich beim Definieren einer XAML StaticResource für den Typ "Double" gemacht habe. Ich dachte, ich könnte ein using für System hinzufügen und dann die Ressource mit sys:Double definieren. Wie Sie der folgenden Ausnahmemeldung entnehmen können, ist es äußerst schwierig zu erkennen, welche Art von XAML-Parsing-Fehler aufgetreten ist. Es weist nicht einmal auf die Baugruppe hin, die den Fehler tatsächlich verursacht hat, geschweige denn einen warmen Hinweis auf das Problem. Wenn solche Probleme auftreten, muss ich jeden einzelnen XAML-Block zurücksetzen, bis der Code ausnahmslos ausgeführt wird. Da es viel länger dauert, eine verpackte Anwendung zu starten, ist dies ein sehr mühsamer, zeitaufwändiger und fehleranfälliger Prozess.

Das Schreiben von RAW-XAML ist fehleranfällig, aber beim Portieren von Hunderten von XAML-Dateien aus WPF sind Fehler unvermeidbar. Mein Fehler war, sys:Double anstelle von x:Double zu verwenden.

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

Hilfreichster Kommentar

Zugegeben, das wurde auch schon an einigen Stellen diskutiert. Ich konnte die Probleme zum Verlinken jedoch nicht finden.

Alle 3 Kommentare

Zugegeben, das wurde auch schon an einigen Stellen diskutiert. Ich konnte die Probleme zum Verlinken jedoch nicht finden.

Hier ist das andere Problem, an das ich gedacht habe: https://github.com/microsoft/microsoft-ui-xaml/issues/2350 und ein Kommentar https://github.com/microsoft/microsoft-ui-xaml/issues/ 2861#issuecomment -656951583.

Danke für das Nachfassen @jtbrower und @robloo , sorry für die langsame Antwort. Dies sollte in 16.8 und 16.9 Preview 1 verbessert werden, wo Microsoft.UI.Xaml.Markup.XamlParseException standardmäßig aktiviert sein sollte.

@robloo danke für die Verlinkung dieser anderen Probleme. Ich weiß, dass die Erfahrung immer noch nicht großartig ist, daher werde ich dieses Problem nicht abschließen, da wir es offen halten können, um dies zu verfolgen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen