XAML 编译

.NET Multi-platform App UI (.NET MAUI) XAML 使用 XAML 编译器 (XAMLC) 直接编译为中间语言 (IL)。 XAML 编译具有许多优势:

  • 在执行 XAML 的编译时检查,可向你通知任何错误。
  • 会消除 XAML 元素的某些负载和实例化时间。
  • 不再包含 .xaml 文件,有助于减小最终程序集的文件大小。

.NET MAUI 应用中默认启用 XAML 编译。 对于使用调试配置生成的应用,XAML 编译可提供 XAML 的编译时验证,但不在程序集中将 XAML 转换为 IL。 XAML 文件改为作为嵌入资源包含在应用包中,并在运行时进行评估。 对于使用发布配置生成的应用,XAML 编译可提供 XAML 的编译时验证,并将 XAML 转换为写入程序集的 IL。 但是,可以在具有 XamlCompilationAttribute 类的两个配置中重写 XAML 编译行为。

重要说明

可以启用已编译的绑定,以提高 .NET MAUI 应用程序中的数据绑定性能。 有关详细信息,请参阅已编译的绑定

禁用 XAML 编译

可以通过将 XamlCompilationOptions.Skip 传递给 XamlCompilationAttribute 来禁用 XAML 编译:

[assembly: XamlCompilation(XamlCompilationOptions.Skip)]

在此示例中,程序集中会禁用 XAML 编译,并在运行时(而非编译时)会报告 XAML 错误。

还可以在类型级别禁用 XAML 编译:

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

在此示例中,仅对 MyPage 类禁用 XAML 编译。

警告

不建议禁用 XAML 编译,因为随后会在运行时对 XAML 进行分析和解释,这会降低应用性能。

启用 XAML 编译

由于 .NET MAUI 应用中会默认启用 XAML 编译,因此删除任何 XamlCompilation(XamlCompilationOptions.Skip) 语句都可确保启用 XAML 编译。

或者,可以通过将 XamlCompilationOptions.Compile 传递给 XamlCompilationAttribute 来强制启用 XAML 编译:

[assembly: XamlCompilation(XamlCompilationOptions.Compile)]

在此示例中,为程序集中包含的所有 XAML 启用了 XAML 编译,并在编译时(而非运行时)报告 XAML 错误。

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

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

在此示例中,仅对 MyPage 类启用 XAML 编译。