メッセージの例
error XA1044: The MSBuild property 'RunAOTCompilation' is not compatible with the CoreCLR runtime. The build cannot continue while this property is enabled. Either remove the property or guard it with a condition: Condition="'$(UseMonoRuntime)' == 'true'"
error XA1044: The MSBuild property 'RunAOTCompilation' is not compatible with the CoreCLR runtime. The build cannot continue while this property is set to 'false'. Remove the property. Starting with .NET 11, set 'PublishReadyToRun' to 'false' to disable ReadyToRun (R2R) AOT compilation.
このメッセージによって提案される条件は、Mono をサポートするターゲットにのみ適しています。 .NET 11 では、$(UseMonoRuntime)=trueは NETSDK1242 で拒否されます。代わりに Mono のみのプロパティを削除します。
Issue
このエラーは、Mono 固有の MSBuild プロパティがプロジェクト ファイルに設定されているが、プロジェクトが CoreCLR や NativeAOT などの Mono 以外のランタイムを使用するように構成されていることを示します。 プロパティが true の場合は、ビルドによって false にリセットされます。これにより、Mono 以外のビルド ステップに渡されないようになり、XA1044 で停止します。 これは警告でも、何もしないサイレント (no-op) 状態でもありません。
CoreCLR アプリケーションの場合、 RunAOTCompilation を false に設定すると、このエラーも発生します。 ReadyToRun コンパイルは無効になりません。
NativeAOT でそれを false に設定しても、このエラーは発生しません。
このエラーをトリガーするプロパティは次のとおりです。
-
RunAOTCompilation— Mono AOT コンパイルを有効にします。 -
EnableLLVM— Mono AOT コンパイラの LLVM を有効にします。
ソリューション
プロジェクト ファイルまたは Directory.Build.propsから Mono 固有のプロパティを削除します。 サポートされている .NET 10 以前の Mono ターゲットにのみ適用されるプロジェクト ファイルまたは条件にのみ、それを保持してください。
ReadyToRun と NativeAOT は個別のコンパイル モデルです。 Mono AOT 設定の 1 対 1 の置き換えではありません。
.NET 11 以降、CoreCLR アプリケーションの ReadyToRun (R2R) AOT コンパイルを無効にするには、RunAOTCompilation を削除し、 以下の代わりに、PublishReadyToRun を false に設定します。
<PropertyGroup>
<PublishReadyToRun>false</PublishReadyToRun>
</PropertyGroup>