Visual Studio在调试模式下未捕获XAML静态资源错误,导致发布时崩溃

ylamdve6  于 2023-08-01  发布在  其他
关注(0)|答案(1)|浏览(98)

我有一个.NET MAUI应用程序,它启动到包含以下控件的页面:

<Switch
                        x:Name="swRemainLoggedIn"
                        Grid.Row="2"
                        Grid.Column="1"
                        IsToggled="{Binding RemainLoggedIn}"
                        Style="{StaticResource StandardSwitch}" />

字符串
StandardSwitch资源在项目中不作为静态资源存在,因此这段代码应该会抛出某种错误。但是,应用程序在调试模式下构建良好,仅在发布模式下启动时崩溃。
我所看到的释放模式的输出没有提供任何有用的反馈。我只是通过反复试验才发现Style属性是问题所在。有人知道为什么Visual Studio可能会错过这个错误吗?
我曾经试图找出如何为发布模式打开详细日志记录,但即使这样也无济于事。

iaqfqrcu

iaqfqrcu1#

我们通常使用以下方法来处理XAML代码:

1.xamlc

.NET多平台应用程序UI(.NET MAUI)XAML使用XAML编译器(XAMLC)直接编译为中间语言(IL)。XAML编译提供了许多好处:

  • 它执行XAML的编译时检查,通知您任何错误。
  • 它消除了XAML元素的一些加载和示例化时间。
  • 通过不再包含.xaml文件,它有助于减小最终部件的文件大小。

XAML编译在.NET MAUI应用程序中默认启用,删除任何XamlCompilation(XamlCompilationOptions.Skip)语句将确保启用XAML编译。
或者,可以通过将XamlCompilationOptions.Compile传递给XamlCompilationAttribute来强制启用XAML编译:

[assembly: XamlCompilation(XamlCompilationOptions.Compile)]

字符串
在此示例中,对程序集中包含的所有XAML启用了XAML编译,并在编译时而不是运行时报告XAML错误。
也可以在类型级别启用XAML编译:

[XamlCompilation (XamlCompilationOptions.Compile)]
public partial class MyPage : ContentPage
{
    ...
}


有关详细信息,请查看文档:XAML compilation

.NET MAUI 2.XAML热重载

.NET多平台应用程序UI(.NET MAUI)XAML热重载是Visual Studio的一项功能,使您能够在运行的应用程序中查看XAML更改的结果,而无需重新生成项目。如果没有XAML热重新加载,您必须在每次想要查看XAML更改的结果时构建和部署应用程序。
在Visual Studio 2022中,默认情况下启用XAML热重载。如果它以前被禁用,可以通过从Visual Studio菜单栏中选择Debug > Options > XAML Hot Reload来启用它。
有关详细信息,请查看文档:XAML Hot Reload for .NET MAUI

相关问题