Error XA1044 de .NET para Android

Mensajes de ejemplo

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.

La condición sugerida por este mensaje solo es adecuada para los destinos que admiten Mono. En .NET 11, $(UseMonoRuntime)=true se rechaza con el error NETSDK1242; elimine en su lugar la propiedad exclusiva de Mono.

Issue

Este error indica que una propiedad de MSBuild específica de Mono está establecida en el archivo de proyecto, pero el proyecto está configurado para usar un entorno de ejecución que no sea Mono, como CoreCLR o NativeAOT. Cuando la propiedad es true, la compilación la restablece a false para que no se pase a los pasos de compilación no Mono y, a continuación, se detiene con XA1044. Esto no es ni una advertencia ni un no-op silencioso.

En el caso de las aplicaciones CoreCLR, al establecer RunAOTCompilation en false también se produce este error. No deshabilita la compilación ReadyToRun. Si se establece en false para NativeAOT, no se produce este error.

Entre las propiedades que desencadenan este error se incluyen:

  • RunAOTCompilation — Habilita la compilación AOT de Mono.
  • EnableLLVM : habilita LLVM para el compilador mono AOT.

Solution

Elimina la propiedad específica de Mono de tu archivo de proyecto o de Directory.Build.props. Consérvelo solo en archivos del proyecto o en condiciones aplicables exclusivamente a destinos de Mono compatibles con .NET 10 y versiones anteriores.

ReadyToRun y NativeAOT son modelos de compilación independientes. No son sustituciones uno a uno de la configuración AOT de Mono.

A partir de .NET 11, para deshabilitar la compilación AOT de ReadyToRun (R2R) para aplicaciones CoreCLR, elimine RunAOTCompilation y establezca PublishReadyToRun a false en su lugar:

<PropertyGroup>
  <PublishReadyToRun>false</PublishReadyToRun>
</PropertyGroup>