.NET 11 のモバイル アプリでは、CoreCLR JIT、ReadyToRun (R2R)、CoreCLR インタープリターを使用できます。 使用可能なモードは、ターゲットとビルドの構成によって異なります。
導入されたバージョン
.NET 11
以前の動作
.NET 10 のモバイル アプリでは、Mono JIT、Mono AOT、LLVM を使用した Mono AOT、Mono インタープリターを使用できます。 使用可能なモードは、ターゲットとビルドの構成によって異なります。
一部のアプリは、選択されたアセンブリの一覧に対してのみ Mono インタープリターを使用しました。 これは、これらのアプリの互換性と速度のバランスを取るのに役立ちました。
新しい動作
.NET 11 モバイル アプリでは、CoreCLR JIT、ReadyToRun (R2R)、CoreCLR インタープリターを使用できます。 使用可能なモードは、ターゲットとビルドの構成によって異なります。
R2R は AOT テクノロジですが、Mono AOT の新しい名前ではありません。 IL とメタデータはアプリに保持され、ターゲットで許可されている場合は JIT またはインタープリターを使用できます。
Android リリース ビルドでは、CoreCLR R2R を使用してアプリの一部をプリコンパイルし、残りの部分には JIT を使用します。
MauiEnableFullReadyToRun=true は、アプリ全体に R2R を適用します。
アプリでは、実行時に動的な動作に JIT を引き続き使用できます。 デバッグ ビルドでは使用する R2R が少ないため、アプリの大部分は JIT で実行されます。
Apple Release は、R2R を使用してアプリ全体をプリコンパイルし、実行時に動的な動作にインタープリターを使用できます。 デバッグ ビルドでは使用する R2R が少ないため、アプリの大部分はインタープリターで実行されます。
NativeAOT は、モバイル プラットフォームのもう 1 つのコード生成オプションです。 Mono AOT と CoreCLR R2R の両方とは異なります。 Android NativeAOT は、.NET 11 で試験的です。
破壊的変更の種類
この変更は、 ソースの互換性 と 動作に影響する可能性があります。
変更理由
CoreCLR は、独自のコンパイラと実行モデルを使用します。 Mono AOT 設定では、CoreCLR R2R は制御されません。
推奨されるアクション
- モバイル ワークロードの R2R の既定値を使用します。
- 各 Mono AOT 設定を R2R 設定に変換しないでください。
-
MauiEnableFullReadyToRunは、アプリを測定した後にのみ使用します。 - 起動時間、速度、メモリ使用量、アプリ サイズを測定します。
- NativeAOT を検討している場合は、異なる制限を持つ別のデプロイ モデルであるため、.NET MAUI Native AOT デプロイ ガイダンスを確認してください。 .NET 11 で Android NativeAOT を試験段階として扱います。
影響を受ける API
マネージド API は削除されません。 次の MSBuild プロパティと項目は、アプリで CoreCLR を使用する場合に Mono コード生成効果を提供しなくなりました。
-
Android:
RunAOTCompilation、AotAssemblies、EnableLLVM、AndroidEnableProfiledAot、AndroidAotMode、AndroidAotAdditionalArguments、AndroidExtraAotOptions、@(AndroidAotProfile)、AndroidAotEnableLazyLoad、AndroidUseInterpreter、UseInterpreter、AndroidEnableMarshalMethods。 -
iOS、tvOS、Mac Catalyst:
UseInterpreter、MtouchInterpreter、MtouchUseLlvm、MtouchFloat32、MonoUseCompressedInterfaceBitmap、RunAotCompilation、AotAssemblies、AotCompileMaxDegreeOfParallelism。
これらの設定により、Mono AOT コンパイル、LLVM、インタープリターの選択、AOT 入力、または生成されたマーシャリング メソッドが構成されます。 彼らは CoreCLR ReadyToRun パイプラインを構成しません。 移行およびビルド診断の動作の詳細については、「Mono プロジェクトのプロパティでモバイル アプリが構成されなくなりました」を参照してください。
.NET