Generování kódu na mobilních zařízeních se mění z Mono na CoreCLR

Mobilní aplikace pro .NET 11 můžou používat CoreCLR JIT, ReadyToRun (R2R) a interpret CoreCLR. Dostupné režimy stále závisejí na konfiguraci cíle a sestavení.

Verze byla představena

.NET 11

Předchozí chování

Mobilní aplikace .NET 10 mohou používat Mono JIT, Mono AOT, Mono AOT s LLVM a interpret Mono. Dostupné režimy závisely na cíli a konfiguraci sestavení.

Některé aplikace používaly interpret Mono pouze pro vybraný seznam assembly. To těmto aplikacím pomohlo vyvážit kompatibilitu a rychlost.

Nové chování

Mobilní aplikace pro .NET 11 můžou používat CoreCLR JIT, ReadyToRun (R2R) a interpret CoreCLR. Dostupné režimy stále závisejí na konfiguraci cíle a sestavení.

R2R je technologie AOT, ale nejedná se o nový název Mono AOT. Uchovává il a metadata v aplikaci a může použít JIT nebo interpret, když to cíl umožňuje.

Buildy verze Pro Android používají CoreCLR R2R k předkompilování části aplikace a pro zbytek používají JIT. MauiEnableFullReadyToRun=true se vztahuje na celou aplikaci. Aplikace může stále používat JIT za běhu pro dynamické chování. Ladění buildů používá méně R2R, takže většina aplikace běží s JIT.

Sestavení Apple Release předkompilují celou aplikaci pomocí R2R a mohou za běhu používat interpret pro dynamické chování. Ladicí sestavení používá méně R2R, takže většina aplikace běží s interpretem.

NativeAOT je další možností generování kódu na mobilních platformách. Liší se od Mono AOT i CoreCLR R2R. Android NativeAOT je experimentální v .NET 11.

Typ zásadní změny

Tato změna může ovlivnit kompatibilitu zdrojového kódu a chování.

Důvod změny

CoreCLR používá vlastní kompilátor a prováděcí model. Nastavení Mono AOT neřídí CoreCLR R2R.

  • Použijte výchozí hodnoty R2R z mobilní úlohy.
  • Nepokoušejte se přeložit jednotlivá nastavení Mono AOT do nastavení R2R.
  • MauiEnableFullReadyToRun používejte až po změření aplikace.
  • Změřte čas spuštění, rychlost, využití paměti a velikost aplikace.
  • Pokud uvažujete o NativeAOT, projděte si pokyny k nasazení nativní AOT .NET MAUI, protože se jedná o samostatný model nasazení s různými omezeními. Považovat Android NativeAOT za experimentální v .NET 11.

Ovlivněná rozhraní API

Žádná spravovaná rozhraní API nejsou odebrána. Pokud aplikace používá CoreCLR, následující vlastnosti a položky MSBuild už neposkytují svůj efekt generování kódu Mono:

  • Android:RunAOTCompilation, AotAssemblies, EnableLLVM, AndroidEnableProfiledAot, AndroidAotMode, AndroidExtraAotOptions, @(AndroidAotProfile), AndroidAotEnableLazyLoad, AndroidAotAdditionalArguments, AndroidUseInterpreter, UseInterpreter, a AndroidEnableMarshalMethods.
  • iOS, tvOS a Mac Catalyst:UseInterpreter, MtouchInterpreter, MtouchUseLlvm, MtouchFloat32, MonoUseCompressedInterfaceBitmap, RunAotCompilation, AotAssemblies, a AotCompileMaxDegreeOfParallelism.

Tato nastavení konfigurují kompilaci Mono AOT, LLVM, výběr interpreta, vstupy AOT nebo generované maršalovací metody. Nekonfigurují pipeline CoreCLR ReadyToRun. Podrobné chování migrace a diagnostiky sestavení najdete v tématu Vlastnosti projektu Mono už nekonfigurují mobilní aplikace.