Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
.NET 11 mobiele apps kunnen gebruikmaken van coreCLR JIT, ReadyToRun (R2R) en de CoreCLR-interpreter. De beschikbare modi zijn nog steeds afhankelijk van de target en de buildconfiguratie.
Geïntroduceerde versie
.NET 11
Vorig gedrag
.NET 10 mobiele apps kunnen de Mono JIT, Mono AOT, Mono AOT met LLVM en de Mono-interpreter gebruiken. De beschikbare modi waren afhankelijk van het doelplatform en de buildconfiguratie.
Sommige apps hebben de Mono-interpreter alleen gebruikt voor een geselecteerde lijst met assembly's. Dit heeft ertoe bijgedragen dat deze apps compatibiliteit en snelheid in balans hebben.
Nieuw gedrag
.NET 11 mobiele apps kunnen gebruikmaken van coreCLR JIT, ReadyToRun (R2R) en de CoreCLR-interpreter. De beschikbare modi zijn nog steeds afhankelijk van het doel en de buildconfiguratie.
R2R is een AOT-technologie, maar het is geen nieuwe naam voor Mono AOT. Het bewaart IL en metagegevens in de app en kan de JIT of interpreter gebruiken wanneer het doel dit toestaat.
Android Release-builds maken gebruik van CoreCLR R2R om een deel van de app vooraf te compileren en de JIT voor de rest te gebruiken.
MauiEnableFullReadyToRun=true past R2R toe op de hele app.
De app kan de JIT nog steeds tijdens runtime gebruiken voor dynamisch gedrag. Debug-builds gebruiken minder R2R, dus het grootste deel van de app wordt uitgevoerd met de JIT.
Apple Release-builds precompileren de volledige app vooraf met R2R en kunnen de interpreter tijdens runtime gebruiken voor dynamisch gedrag. Debug-builds gebruiken minder R2R, dus de meeste app wordt uitgevoerd met de interpreter.
NativeAOT is een andere optie voor het genereren van code op mobiele platforms. Het verschilt van zowel Mono AOT als CoreCLR R2R. Android NativeAOT is experimenteel in .NET 11.
Type van brekende verandering
Deze wijziging kan van invloed zijn op broncompatibiliteit en gedrag.
Reden voor wijziging
CoreCLR maakt gebruik van een eigen compiler- en uitvoeringsmodel. Mono AOT-instellingen sturen CoreCLR R2R niet aan.
Aanbevolen actie
- Gebruik de R2R-standaardwaarden van de mobiele workload.
- Probeer niet elke Mono AOT-instelling te vertalen in een R2R-instelling.
- Gebruik deze
MauiEnableFullReadyToRunpas nadat u de app hebt gemeten. - Meet opstarttijd, snelheid, geheugengebruik en app-grootte.
- Als u NativeAOT overweegt, raadpleegt u de .NET MAUI-implementatierichtlijnen voor Native AOT omdat dit een afzonderlijk implementatiemodel met verschillende beperkingen is. Behandel Android NativeAOT als experimenteel in .NET 11.
Betreffende API's
Er worden geen beheerde API's verwijderd. De volgende MSBuild-eigenschappen en -items bieden hun monocodegeneratie-effect niet meer wanneer de app Gebruikmaakt van CoreCLR:
-
Android:
RunAOTCompilation,AotAssemblies,EnableLLVM,AndroidEnableProfiledAot,AndroidAotMode,AndroidAotAdditionalArguments,AndroidExtraAotOptions,@(AndroidAotProfile),AndroidAotEnableLazyLoad,AndroidUseInterpreter,UseInterpreter, enAndroidEnableMarshalMethods. -
iOS, tvOS en Mac Catalyst:
UseInterpreter,MtouchInterpreter,MtouchUseLlvm,MtouchFloat32,MonoUseCompressedInterfaceBitmap,RunAotCompilation,AotAssemblies, enAotCompileMaxDegreeOfParallelism.
Met deze instellingen configureert u Mono AOT-compilatie, LLVM, interpreterselectie, AOT-invoer of gegenereerde marshalmethoden. Ze configureren de CoreCLR ReadyToRun-pijplijn niet. Zie voor het gedetailleerde migratie- en builddiagnosegedrag Mono-projecteigenschappen configureren mobiele apps niet langer.