Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplicativos móveis do .NET 11 podem usar o CoreCLR JIT, ReadyToRun (R2R) e o interpretador CoreCLR. Os modos disponíveis ainda dependem do destino e da configuração de build.
Versão introduzida
.NET 11
Comportamento anterior
.NET 10 aplicativos móveis poderiam usar o Mono JIT, Mono AOT, Mono AOT com LLVM e o interpretador Mono. Os modos disponíveis dependiam do destino e da configuração de build.
Alguns aplicativos usaram o interpretador Mono para apenas uma lista selecionada de assemblies. Isso ajudou esses aplicativos a equilibrar a compatibilidade e a velocidade.
Novo comportamento
.NET 11 aplicativos móveis podem usar o CoreCLR JIT, ReadyToRun (R2R) e o interpretador CoreCLR. Os modos disponíveis ainda dependem do destino e da configuração de build.
R2R é uma tecnologia AOT, mas não é um nome novo para Mono AOT. Isso mantém IL e metadados no aplicativo e pode usar o JIT ou o interpretador quando o destino permitir.
Os builds de Release do Android usam o CoreCLR R2R para pré-compilar parte do aplicativo e usar o JIT para o restante.
MauiEnableFullReadyToRun=true aplica R2R a todo o aplicativo.
O aplicativo ainda pode usar o JIT em tempo de execução para comportamento dinâmico. Os builds de depuração usam menos R2R, portanto, a maior parte do aplicativo é executada com o JIT.
As compilações de Release da Apple pré-compilam todo o aplicativo com R2R e podem usar o interpretador em tempo de execução para comportamento dinâmico. Os builds de depuração usam menos R2R, portanto, a maior parte do aplicativo é executada com o interpretador.
NativeAOT é outra opção de geração de código em plataformas móveis. É diferente de ambos, Mono AOT e CoreCLR R2R. O Android NativeAOT é experimental no .NET 11.
Tipo de mudança disruptiva
Essa alteração pode afetar a compatibilidade de código-fonte e o comportamento.
Motivo da alteração
O CoreCLR usa seu próprio compilador e modelo de execução. As configurações do Mono AOT não controlam o CoreCLR R2R.
Ação recomendada
- Use os padrões R2R da carga de trabalho móvel.
- Não tente converter cada configuração do Mono AOT em uma configuração R2R.
- Só use
MauiEnableFullReadyToRundepois de medir o aplicativo. - Medir o tempo de inicialização, a velocidade, o uso da memória e o tamanho do aplicativo.
- Se você estiver considerando NativeAOT, examine as diretrizes de implantação do AOT nativo de .NET MAUI porque ele é um modelo de implantação separado com restrições diferentes. Trate o Android NativeAOT como experimental no .NET 11.
APIs afetadas
Nenhuma API gerenciada é removida. As seguintes propriedades e itens do MSBuild não fornecem mais o efeito de geração de código Mono quando o aplicativo usa o CoreCLR:
-
Android:
RunAOTCompilation,AotAssemblies,EnableLLVM,AndroidEnableProfiledAot,AndroidAotMode,AndroidAotAdditionalArguments,AndroidExtraAotOptions,@(AndroidAotProfile),AndroidAotEnableLazyLoad,AndroidUseInterpreter,UseInterpretereAndroidEnableMarshalMethods. -
iOS, tvOS e Mac Catalyst:
UseInterpreter,MtouchInterpreter,MtouchUseLlvm,MtouchFloat32,MonoUseCompressedInterfaceBitmap,RunAotCompilation,AotCompileMaxDegreeOfParallelismeAotAssemblies.
Essas configurações configuram a compilação mono AOT, LLVM, seleção de interpretador, entradas AOT ou métodos marshal gerados. Eles não configuram o pipeline ReadyToRun do CoreCLR. Para obter detalhes sobre a migração e o comportamento de build-diagnostic, consulte As propriedades do projeto Mono não configuram mais aplicativos móveis.