代码之家  ›  专栏  ›  技术社区  ›  Art

Visual Studio在调试模式下未捕获导致Release崩溃的XAML静态资源错误

  •  0
  • Art  · 技术社区  · 2 年前

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

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

    这个 StandardSwitch 资源在项目中不作为静态资源存在,因此此代码应该引发某种错误。然而,该应用程序在调试模式下构建良好,仅在发布模式下启动时崩溃。

    我所看到的发布模式的输出没有提供任何有用的反馈。我只是通过反复试验才发现Style属性是个问题。有人知道为什么Visual Studio可能会错过这个错误吗?

    我试图弄清楚如何在发布模式下打开详细的日志记录,但即使这样也无济于事。

    0 回复  |  直到 2 年前
        1
  •  0
  •   Jessie Zhang -MSFT    2 年前

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

    1.xamlc

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

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

    中默认启用XAML编译。NET MAUI应用程序,删除任何 XamlCompilation(XamlCompilationOptions.Skip) 语句将确保启用XAML编译。

    或者,XAML编译可以通过以下方式强制启用: XamlCompilationOptions.Compile XamlCompilationAttribute :

    [assembly: XamlCompilation(XamlCompilationOptions.Compile)]
    

    在本例中,对程序集中包含的所有XAML启用了XAML编译,在编译时而不是运行时报告XAML错误。

    XAML编译也可以在类型级别启用:

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

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

    2.的XAML热重新加载。净毛伊

    .NET多平台应用程序UI(.NET MAUI)XAML热重新加载是Visual Studio的一项功能,使您能够在运行的应用程序中查看XAML更改的结果,而无需重新生成项目。如果没有XAML热重新加载,每次要查看XAML更改的结果时,都必须构建和部署应用程序。

    默认情况下,在Visual Studio 2022中启用XAML热重新加载。如果它以前被禁用过,可以通过选择Debug>来启用它;选项>从Visual Studio菜单栏进行XAML热重新加载。

    有关详细信息,请查看文档: XAML Hot Reload for .NET MAUI .