Начиная с .NET 11 Preview 4, все приложения .NET MAUI на Android, iOS и Mac Catalyst по умолчанию работают на CoreCLR. Mono больше не является рантаймом по умолчанию для мобильных платформ.
Это значит, что мобильные приложения теперь крутятся на том же рантайме, что и ASP.NET Core, Azure-сервисы и десктопные приложения.
Что было раньше
До .NET 11 мобильная часть .NET MAUI работала на Mono. Серверные, облачные и десктопные приложения уже давно использовали CoreCLR.
Два разных рантайма означали разное поведение JIT, разные характеристики сборщика мусора, разный инструментарий диагностики и разные баги. Теперь эта разница уходит.
Mono обеспечивал работу .NET на мобильных платформах больше 15 лет. MonoTouch принёс C# на iPhone в 2009 году, MonoDroid появился для Android. На Mono построены Unity, Avalonia UI, Uno Platform, MonoGame и Godot.
Переход на CoreCLR не означает конец Mono. Blazor WebAssembly по-прежнему использует Mono, и в .NET 11 это не меняется.
Зачем переходить на CoreCLR
Унификация рантайма. Один рантайм для всех платформ означает единый набор инструментов и предсказуемое поведение. Не нужно держать в голове различия между Mono и CoreCLR.
Производительность. CoreCLR приносит на мобильные платформы tiered JIT compilation, ReadyToRun (R2R) прекомпиляцию и Profile-Guided Optimization (PGO). В Preview 4 уже включены partial R2R по умолчанию и встроенные PGO-профили. Стартап базового
dotnet new maui приложения стал заметно быстрее.NativeAOT. CoreCLR является основой для NativeAOT-компиляции. С переходом на CoreCLR открывается путь к NativeAOT на Android. На iOS и Mac Catalyst NativeAOT развивает уже существующую AOT-компиляцию, но с более унифицированным тулчейном.
Что с производительностью на практике
Для простых приложений стартап стал быстрее. Но сообщество уже сообщает о регрессиях в сложных приложениях на Android. Время запуска или размер приложения могут увеличиться. На iOS команда успешно прошла ревью App Store.
Из поддерживаемых архитектур убраны Android x86, Android API 23 и ниже, а также embedding APIs. Поддержка Android arm32 пока под вопросом.
Как откатиться на Mono
Если что-то пошло не так, можно временно вернуть Mono. Добавьте в файл проекта:
<PropertyGroup>
<UseMonoRuntime>true</UseMonoRuntime>
</PropertyGroup>
Работает для Android, iOS и Mac Catalyst. Опция доступна на протяжении всего сервисинга .NET 11.
Диагностика
Теперь на мобильных платформах работают стандартные инструменты .NET-диагностики:
dotnet-trace и dotnet-counters. Те же инструменты, что вы используете на сервере и десктопе, теперь доступны для Android и iOS/Mac Catalyst.Как попробовать
Установите .NET 11 Preview 4 SDK и workload:
dotnet workload install maui
Соберите приложение с таргетом
net11.0-android, net11.0-ios или net11.0-maccatalyst и проверьте старт, размер пакета и общую работоспособность. Если нашли проблему, заводите issue в dotnet/android или dotnet/macios. GA-релиз запланирован на ноябрь 2026, и фидбек из превью напрямую влияет на то, что будет исправлено.
➡️ Блог разработчиков
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека шарписта
#sharp_view