Полноценная поддержка появилась только в Visual Studio 2022 и .NET Core 6.
"Multi-platform App User Interface" устанавливается отдельным пунктом установщика Visual Studio. Требуется загрузить около 3 ГБ данных.
Создать проект можно используя один из предоставленных шаблонов приложений. Можно собрать приложение и использовать эмуляторы для iOS, Android. Собрать приложения можно также для Windows, Tizen и macOS Catalyst. Однако, образ ранее подготовленный для Android Studio, среда разработки запустить не смогла. Потребовалось скачать новый образ из сети.
При генерации приложения следует избегать использования имени MauiApp :-)
MAUI использует XAML и, таким образом, концептуально близок к WPF и Avalonia. Однако, в рамках проекта Avalonia разрабатываются свои собственные инструменты кросс-платформенной разработки, которые поддерживают Android и iOS. Стоит заметить, что в отличие от MAUI, Avalonia работает на большинстве дистрибутивов Linux.
Выбор между Avalonia и MAUI совсем не прост. На стороне MAUI:
- официальная поддержка Microsoft (у Avalonia, похоже, спонсорская поддержка Micosoft)
- доступ к Native API (не знаю, как это реализовано в Avalonia)
- Hot Reload
Однако на стороне Avalonia:
- лучшая поддержка Linux
- Reactive Programming
- Lightweight
Структура приложения близка к WPF:
- существует файл "MauiProgram.cs" в котором осуществляется конфигурирование приложения MAUI. В частности, добавляются используемые шрифты
- есть файл "AppShell.xaml", в котором, вероятно, определяется Routing
- файл "App.xaml" определяет окно верхнего уровня, в котором определяются используемые ресурсы. Так же в "App.xaml.cs" создаётся MainPage из AppShell:
MainPage = new AppShell();
- "MainPage.xaml" и "MainPage.xaml.cs" определяют основную страницу приложения
Одна из сильных сторон MAUI - повторное использование ресурсов, см. StaticResource, ThemeResource, Binding.
В дополнительных главах (только online, в печатной книге они отсутствуют) книги "C# 10 and .NET 6. Modern Cross-Platform Development" by Mark J. Price в разделе, посвящённом MAIU есть разделы, посвящённые ObservableCollection и интерфейсу INotificationPropertyChanged. В книге есть несколько советов о том, как разрешить небезопасные соединение между приложением и сервером (поменять https на http). См.: ATS, UsesCleartextTraffic.
Исходные тексты MAUI доступны в репозитории dotnet/maui на GitHub.