Microsoft-ui-xaml: Pesan Pengecualian Parsing XAML tidak Berguna

Dibuat pada 19 Agu 2020  ·  3Komentar  ·  Sumber: microsoft/microsoft-ui-xaml

Saya diminta untuk membuka masalah oleh @stevenbrix ketika saya menyebutkan ini pada pengumuman panggilan komunitas 19 Agustus. Perhatikan bahwa dalam kasus saya, saya membuat aplikasi WinUI Desktop.

Saya menemukan pesan pengecualian Parsing XAML hampir tidak berguna ketika mencoba memperbaiki kesalahan penguraian. Saya memiliki latar belakang yang luas dalam pengembangan aplikasi WPF sehingga tidak seperti saya baru menggunakan XAML.

Saat mencoba mem-port sebagian kecil pustaka XAML ke WinUI, tidak ada satu pun pesan pengecualian yang berguna dalam membantu saya menyelesaikan masalah saya. Meskipun saya belum mencatat penghitungannya, contoh berikut adalah tipikal dari apa yang saya temui.

Contoh Pesan Kesalahan untuk Kesalahan XAML sederhana

Ambil contoh kesalahan yang saya buat saat mendefinisikan XAML StaticResource untuk tipe "Double". Saya pikir saya dapat menambahkan penggunaan untuk Sistem dan kemudian mendefinisikan sumber daya dengan sys:Double. Seperti yang Anda lihat dari pesan pengecualian di bawah ini, akan sangat sulit untuk mengetahui jenis kesalahan penguraian XAML yang terjadi. Itu bahkan tidak menunjuk ke Majelis yang sebenarnya menyebabkan kesalahan apalagi memiliki petunjuk hangat tentang apa masalahnya. Ketika masalah seperti ini terjadi, saya harus mulai memundurkan setiap blok XAML hingga kode berjalan tanpa kecuali. Karena membutuhkan waktu lebih lama untuk meluncurkan aplikasi yang dikemas, ini merupakan proses yang sangat membosankan, memakan waktu, dan rawan kesalahan.

Menulis XAML mentah rawan kesalahan, tetapi ketika mem-porting ratusan file XAML dari WPF, kesalahan tidak dapat dihindari. Kesalahan saya adalah menggunakan sys:Double bukan 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

Komentar yang paling membantu

Setuju, ini telah dibahas beberapa tempat sebelumnya juga. Saya belum dapat menemukan masalah untuk ditautkan.

Semua 3 komentar

Setuju, ini telah dibahas beberapa tempat sebelumnya juga. Saya belum dapat menemukan masalah untuk ditautkan.

Terima kasih sudah follow up @jtbrower dan @robloo , maaf slow respon. Ini harus ditingkatkan di 16.8 dan 16.9 Pratinjau 1, di mana Microsoft.UI.Xaml.Markup.XamlParseException harus diaktifkan secara default.

@robloo terima kasih telah menautkan masalah lain itu. Saya tahu pengalamannya masih belum bagus, jadi saya tidak akan menutup masalah ini, karena kami dapat tetap membukanya untuk melacak ini.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat