XAML のコンパイル

.NET マルチプラットフォーム アプリ UI (.NET MAUI) XAML は直接、XAML コンパイラ (XAMLC) を使って中間言語 (IL) にコンパイルできます。 XAML コンパイルには、多くの利点があります。

  • XAML のコンパイル時チェックを実行し、エラーがあればユーザーに知らせます。
  • XAML 要素の読み込みとインスタンス化の時間を短縮します。
  • .xaml ファイルが含まれていないので、最終アセンブリのファイル サイズを低減できます。

.NET MAUI アプリでは、XAML コンパイルが既定で有効になっています。 デバッグ構成を使用してビルドされたアプリの場合、XAML コンパイルでは XAML のコンパイル時検証が提供されますが、アセンブリ内の XAML を IL に変換することはありません。 その代わり、XAML ファイルはアプリ パッケージに埋め込みリソースとして含まれており、実行時に評価されます。 リリース構成を使用してビルドされたアプリの場合、XAML コンパイルでは XAML のコンパイル時検証が提供され、XAML はアセンブリに書き込まれた IL に変換されます。 ただし、XAML コンパイル動作は、XamlCompilationAttribute クラスを使用する両方の構成でオーバーライドできます。

重要

コンパイル済みのバインディングを有効にすると、.NET MAUI アプリケーションのデータ バインディングのパフォーマンスを向上させることができます。 詳しくは、「コンパイル済みのバインディング」を参照してください。

XAML コンパイルを無効にする

XAML コンパイルは、XamlCompilationAttributeXamlCompilationOptions.Skipを渡すことによって無効にできます。

[assembly: XamlCompilation(XamlCompilationOptions.Skip)]

この例では、XAML コンパイルはアセンブリ内で無効になっており、コンパイル時ではなくランタイム時に XAML エラーが報告されます。

XAML コンパイルは、型レベルで無効にすることもできます。

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

この例では、XAML コンパイルは MyPage クラスに対してのみ無効になっています。

警告

XAML コンパイルを無効にすることはお勧めしません。XAML はランタイム時に解析および解釈されるため、アプリのパフォーマンスが低下します。

XAML コンパイルを有効にする

.NET MAUI アプリでは XAML コンパイルが既定で有効になっているため、任意のXamlCompilation(XamlCompilationOptions.Skip) ステートメントを削除すると、XAML コンパイルが確実に有効になります。

また、XamlCompilationAttributeXamlCompilationOptions.Compileを渡すことによって強制的に XAML コンパイルを有効にすることもできます。

[assembly: XamlCompilation(XamlCompilationOptions.Compile)]

この例では、XAML コンパイルはアセンブリ内に含まれているすべての XAML で有効になっており、ランタイム時ではなくコンパイル時に XAML エラーが報告されます。

XAML コンパイルは、型レベルで有効にするにすることもできます。

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

この例では、XAML コンパイルは MyPage クラスに対してのみ有効になっています。