.NET voor Android-foutcode XA1044

Voorbeeldberichten

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.

De voorwaarde die door dit bericht wordt voorgesteld, is alleen geschikt voor doelen die Mono ondersteunen. In .NET 11 wordt $(UseMonoRuntime)=true afgewezen met NETSDK1242; verwijder in plaats daarvan de eigenschap die alleen voor Mono geldt.

Issue

Deze fout geeft aan dat een monospecifieke MSBuild-eigenschap is ingesteld in het projectbestand, maar het project is geconfigureerd voor het gebruik van een niet-Mono-runtime, zoals CoreCLR of NativeAOT. Wanneer de eigenschap is true, wordt deze door de build teruggezet op false zodat deze niet wordt doorgegeven aan niet-Mono-buildstappen en stopt met XA1044. Dit is geen waarschuwing of een stille no-op.

Voor CoreCLR-toepassingen wordt deze fout ook gegenereerd door RunAOTCompilation in te stellen op false. De compilatie ReadyToRun wordt niet uitgeschakeld. Als u dit voor NativeAOT instelt op false, wordt deze fout niet gegenereerd.

Eigenschappen die deze fout activeren, zijn onder andere:

  • RunAOTCompilation — Maakt Mono AOT-compilatie mogelijk.
  • EnableLLVM — Hiermee schakelt u LLVM in voor de Mono AOT-compiler.

Solution

Verwijder de Mono-specifieke eigenschap uit uw projectbestand of Directory.Build.props. Bewaar deze alleen in projectbestanden of -voorwaarden die uitsluitend van toepassing zijn op ondersteunde .NET 10 en eerdere Mono-doelen.

ReadyToRun en NativeAOT zijn afzonderlijke compilatiemodellen. Ze zijn geen een-op-een-vervangingen voor Mono AOT-instellingen.

Vanaf .NET 11 kunt u ReadyToRun (R2R) AOT-compilatie uitschakelen voor CoreCLR-toepassingen door RunAOTCompilation te verwijderen en de instelling in te stellen. PublishReadyToRun tot false in plaats daarvan:

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