Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Мобильные приложения .NET 11 могут использовать JIT CoreCLR, ReadyToRun (R2R) и интерпретатор CoreCLR. Доступные режимы по-прежнему зависят от целевой платформы и конфигурации сборки.
Представленная версия
.NET 11
Предыдущее поведение
мобильные приложения .NET 10 могут использовать Mono JIT, Mono AOT, Mono AOT с LLVM и интерпретатор Mono. Доступные режимы зависели от цели и конфигурации сборки.
Некоторые приложения использовали интерпретатор Mono только для выбранного списка сборок. Это помогло этим приложениям сбалансировать совместимость и скорость.
Новое поведение
В мобильных приложениях .NET 11 можно использовать JIT CoreCLR, ReadyToRun (R2R) и интерпретатор CoreCLR. Доступные режимы по-прежнему зависят от цели и конфигурации сборки.
R2R — это технология AOT, но это не новое имя для Mono AOT. Он сохраняет IL и метаданные в приложении и может использовать JIT или интерпретатор, если это поддерживается целевой платформой.
Сборки выпуска Android используют CoreCLR R2R для предварительной компиляции части приложения и используют JIT для остальной части.
MauiEnableFullReadyToRun=true Применяет R2R ко всему приложению.
Приложение по-прежнему может использовать JIT во время выполнения для динамического поведения. Отладочные сборки используют меньше R2R, поэтому большая часть приложения работает с JIT.
Сборки Apple Release предварительно компилируют всё приложение с помощью R2R и могут использовать интерпретатор во время выполнения для динамического поведения. Отладочные сборки используют меньше R2R, поэтому большая часть приложения выполняется с интерпретатором.
NativeAOT — это ещё один вариант генерации кода на мобильных платформах. Он отличается от обоих: Mono AOT и CoreCLR R2R. Android NativeAOT является экспериментальным в .NET 11.
Тип разрушающего изменения
Это изменение может повлиять на совместимость с исходным кодом и поведение.
Причина изменения
CoreCLR использует собственный компилятор и модель выполнения. Параметры Mono AOT не управляют CoreCLR R2R.
Рекомендуемое действие
- Используйте значения по умолчанию R2R из мобильной нагрузки.
- Не пытайтесь сопоставить каждый параметр Mono AOT с параметром R2R.
- Используйте
MauiEnableFullReadyToRunтолько после оценки приложения. - Измеряйте время запуска, скорость, использование памяти и размер приложения.
- Если вы рассматриваете NativeAOT, ознакомьтесь с руководством по развертыванию .NET MAUI Native AOT, так как это отдельная модель развертывания с различными ограничениями. Рассматривать Android NativeAOT как экспериментальный в .NET 11.
Затронутые API
Управляемые API не удаляются. Следующие свойства и элементы MSBuild больше не обеспечивают эффект генерации кода Mono, если приложение использует CoreCLR:
-
Android:
RunAOTCompilation,AotAssemblies,AndroidAotMode,@(AndroidAotProfile),AndroidAotAdditionalArguments,AndroidEnableProfiledAot,EnableLLVM,AndroidAotEnableLazyLoad,AndroidUseInterpreter,AndroidExtraAotOptions,UseInterpreterиAndroidEnableMarshalMethods. -
iOS, tvOS и Mac Catalyst:
UseInterpreter,MtouchUseLlvm,MtouchInterpreter,MtouchFloat32,MonoUseCompressedInterfaceBitmap,RunAotCompilation,AotAssembliesиAotCompileMaxDegreeOfParallelism.
Эти параметры настраивают компиляцию Mono AOT, LLVM, выбор интерпретатора, входные файлы для AOT-компиляции или сгенерированные методы маршалинга. Они не настраивают конвейер CoreCLR ReadyToRun. Подробные сведения о поведении миграции и диагностики сборки см. в свойствах проекта Mono, которые больше не используются для настройки мобильных приложений.