Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las aplicaciones móviles de .NET 11 pueden usar el JIT de CoreCLR, ReadyToRun (R2R) y el intérprete de CoreCLR. Los modos disponibles siguen dependiendo del destino y de la configuración de compilación.
Versión introducida
.NET 11
Comportamiento anterior
Las aplicaciones móviles de .NET 10 podrían usar Mono JIT, Mono AOT, Mono AOT con LLVM y el intérprete Mono. Los modos disponibles dependían del destino y de la configuración de compilación.
Algunas aplicaciones usaron el intérprete Mono solo para una lista seleccionada de ensamblados. Esto ayudó a esas aplicaciones a equilibrar la compatibilidad y la velocidad.
Nuevo comportamiento
Las aplicaciones móviles de .NET 11 pueden usar CoreCLR JIT, ReadyToRun (R2R) y el intérprete de CoreCLR. Los modos disponibles siguen dependiendo del destino y de la configuración de compilación.
R2R es una tecnología AOT, pero no es un nuevo nombre para Mono AOT. Mantiene IL y metadatos en la aplicación y puede usar el JIT o el intérprete cuando el destino lo permite.
Las compilaciones de la versión de Android usan CoreCLR R2R para precompilar parte de la aplicación y usar jiT para el resto.
MauiEnableFullReadyToRun=true aplica R2R a toda la aplicación.
La aplicación todavía puede usar JIT en tiempo de ejecución para el comportamiento dinámico. Las compilaciones de depuración usan menos R2R, por lo que la mayor parte de la aplicación se ejecuta con JIT.
Las compilaciones Release de Apple precompilan la aplicación completa con R2R y pueden usar el intérprete en tiempo de ejecución para el comportamiento dinámico. Las compilaciones de depuración usan menos R2R, por lo que la mayoría de la aplicación se ejecuta con el intérprete.
NativeAOT es otra opción de generación de código en plataformas móviles. Es diferente de Mono AOT y CoreCLR R2R. Android NativeAOT es experimental en .NET 11.
Tipo de cambio disruptivo
Este cambio puede afectar a la compatibilidad del origen y al comportamiento.
Motivo del cambio
CoreCLR usa su propio compilador y modelo de ejecución. La configuración de Mono AOT no controla CoreCLR R2R.
Acción recomendada
- Use los valores predeterminados de R2R de la carga de trabajo móvil.
- No intente traducir cada configuración de Mono AOT en una configuración de R2R.
- Use
MauiEnableFullReadyToRunsolo después de medir la aplicación. - Mida el tiempo de inicio, la velocidad, el uso de memoria y el tamaño de la aplicación.
- Si está considerando NativeAOT, revise la guía de implementación de .NET MAUI Native AOT porque es un modelo de implementación independiente con restricciones diferentes. Trate Android NativeAOT como experimental en .NET 11.
Las APIs afectadas
No se quita ninguna API administrada. Las siguientes propiedades y elementos de MSBuild ya no proporcionan su efecto de generación de código Mono cuando la aplicación usa CoreCLR:
-
Android:
RunAOTCompilation,AotAssemblies,EnableLLVM,AndroidAotMode,AndroidEnableProfiledAot,AndroidAotAdditionalArguments,AndroidExtraAotOptions,@(AndroidAotProfile),AndroidAotEnableLazyLoad,AndroidUseInterpreter,UseInterpreter, yAndroidEnableMarshalMethods. -
iOS, tvOS y Mac Catalyst:
UseInterpreter,MtouchInterpreter,MtouchUseLlvm,MtouchFloat32,MonoUseCompressedInterfaceBitmap,RunAotCompilation,AotAssembliesyAotCompileMaxDegreeOfParallelism.
Esta configuración configura la compilación AOT de Mono, LLVM, la selección del intérprete, las entradas AOT o los métodos marshal generados. No configuran la canalización ReadyToRun de CoreCLR. Para ver el comportamiento detallado de la migración y el diagnóstico de compilación, consulte Las propiedades del proyecto Mono ya no sirven para configurar aplicaciones móviles.