Основное внимание на .NET MAUI в .NET 8 уделяется качеству. В .NET 8 запросы на вытягивание 1618 были объединены, что закрыло 689 проблем. К ним относятся изменения команды .NET MAUI, а также сообщества .NET MAUI. Эти изменения должны привести к значительному увеличению качества в .NET 8.
Важно!
Благодаря работе с базовыми внешними зависимостями, такими как средства Xcode или Android SDK, политика поддержки многоплатформенного пользовательского интерфейса приложений .NET (.NET MAUI) отличается от политики поддержки .NET и .NET Core. Дополнительные сведения см. в политике поддержки .NET MAUI.
В .NET 8 MAUI поставляется в виде рабочей нагрузки .NET и нескольких пакетов NuGet. Преимущество этого подхода заключается в том, что он позволяет легко закреплять проекты в определенных версиях, а также позволяет легко просматривать нераспроданные или экспериментальные сборки. При создании проекта .NET MAUI необходимые пакеты NuGet автоматически добавляются в проект.
В этой статье перечислены новые возможности .NET MAUI для .NET 8 и ссылки на более подробные сведения о каждом из них.
Хотя основное внимание в этом выпуске .NET MAUI является качеством, есть также некоторые новые функции, которые позволяют создавать новые сценарии в приложениях.
Элементы управления
Элементы управления, поддерживающие методы расширения ввода текста, поддерживающие скрытие и отображение клавиатуры обратимого ввода. Дополнительные сведения см. в разделе "Скрытие и отображение клавиатуры обратимого ввода".
Класс ContentPage получает HideSoftInputOnTapped свойство, указывающее, будет ли касание в любом месте страницы вызвать скрытие клавиатуры обратимого ввода, если она видна. Дополнительные сведения см. в разделе ContentPage.
Перегрузка Grid.Add , принимающую 5 аргументов, была добавлена обратно в .NET MAUI. Однако этот метод устарел и доступен только для помощи в миграции из Xamarin.Forms.
GridAddWithSpan получает метод расширения, который добавляет представление в Grid указанную строку и столбец с указанными диапазонами строк и столбцов.
Персональный компьютер
Элементы строки меню и элементы контекстного меню можно вызывать с помощью сочетаний клавиш, известных как акселераторы клавиатуры. Дополнительные сведения см. в статье об акселераторах клавиатуры.
ОбъектыDragStartingEventArgs, DragEventArgsDropEventArgsкоторые сопровождают события жестов перетаскивания и DropCompletedEventArgs перетаскивания, получают PlatformArgs свойство. Это свойство предоставляет доступ к аргументам конкретной платформы для события перетаскивания или перетаскивания. Дополнительные сведения см. в разделе "Распознавание жеста перетаскивания".
Flashlight получает метод, определяющий IsSupportedAsync , доступен ли фонарик на устройстве. Дополнительные сведения см. в разделе "Фонарик".
SensorSpeed интервалы были унифицированы на всех платформах. Дополнительные сведения см. в разделе "Доступ к датчикам устройств".
Класс Permissions получает Permissions.Bluetooth разрешение, которое является разрешением Android 12 для поиска устройств Bluetooth, что делает текущее устройство обнаруживаемым на других устройствах Bluetooth и обмен данными с уже сопряженными устройствами Bluetooth. Дополнительные сведения см. в разделе Разрешения.
Класс Permissions получает Permissions.NearbyWifiDevices разрешение, которое является разрешением Android 13 для доступа к близлежащим устройствам WiFi. Дополнительные сведения см. в разделе Разрешения.
XAML
Атрибут x:ClassModifier можно указать в классах XAML, чтобы управлять уровнем доступа для созданного класса в сборке. Дополнительные сведения см. в разделе модификаторов классов.
Для устранения неполадок можно создать пустой экран-заставку. Дополнительные сведения см. в разделе "Создание пустого экрана-заставки".
Изменение размера проверяет наличие повторяющихся имен файлов изображения. Дополнительные сведения см. в статье об ошибках с повторяющимися именами файлов изображений.
Несколько системных шрифтов можно легко использовать в приложениях Android. Дополнительные сведения см. в разделе "Использование шрифтов".
В iOS MauiUIApplicationDelegate получает PerformFetch метод, который можно переопределить или использовать с помощью делегата iOSLifecycle.PerformFetch . Дополнительные сведения см. в разделе о событиях жизненного цикла платформы iOS и Mac Catalyst.
Удаление и удаление типов
Не рекомендуется использовать следующие типы или элементы:
Свойство PhoneDialer.Current было удалено. Вместо этого используйте PhoneDialer.Default.
OpenGLView был удален.
Изменения в работе
Следующее поведение изменилось с предыдущего выпуска:
Теперь для использования элемента управления из XAML требуется следующее Mapxmlns объявление пространства имен: xmlns:maps="http://schemas.microsoft.com/dotnet/2021/maui/maps"
Кэширование изображений отключено в Android при загрузке изображения из потока с ImageSource.FromStream помощью метода. Это связано с отсутствием данных, из которых необходимо создать разумный ключ кэша.
На iOS страницы автоматически прокручиваются, когда клавиатура обратимого ввода будет охватывать поле ввода текста, чтобы поле было выше мягкой клавиатуры ввода. Метод KeyboardAutoManagerScroll.Disconnect в Microsoft.Maui.Platform пространстве имен можно вызвать, чтобы отключить это поведение по умолчанию. Метод KeyboardAutoManagerScroll.Connect можно вызвать для повторного включения поведения после его отключения.
Изменение цвета вкладки в приложении оболочки на некоторых платформах. Дополнительные сведения см. в разделе Внешний вид вкладок.
Не обязательно указывать значение свойства $(ApplicationIdGuid) сборки в файле проекта приложения. Это связано с тем, что приложения Windows для .NET MAUI больше не требуют GUID в качестве идентификатора приложения, а вместо этого используйте значение свойства сборки $(ApplicationId) в качестве идентификатора приложения. Таким образом, один и тот же идентификатор приложения обратного формата домена теперь используется на всех платформах, таких как com.mycompany.myapp.
Приложения .NET MAUI Mac Catalyst больше не ограничены 50 элементами меню в строке меню.
Метод PlatformImage.FromStream в Microsoft.Maui.Graphics пространстве имен теперь можно использовать для загрузки образов в Windows вместо использования W2DImageLoadingService класса.
В Android анимации учитывают параметры системной анимации. Дополнительные сведения см. в разделе "Базовая анимация".
Производительность
В .NET MAUI 8 есть много изменений производительности. Эти изменения можно классифицировать по пяти областям:
Чтобы обновить проекты с .NET 7 до .NET 8, установите .NET 8 и рабочую нагрузку .NET MAUI с помощью Visual Studio 17.8+ или с автономным установщиком и командойdotnet workload install maui.
Затем откройте CSPROJ-файл и измените monikers Целевой платформы (TFMs) с 7 до 8. Если вы используете TFM, например net7.0-ios13.6 обязательно соответствуете версии платформы или полностью удалите ее. В следующем примере показаны TFMs для проекта .NET 7:
Эта $(MauiVersion) переменная ссылается на установленную версию .NET MAUI. Это можно переопределить, добавив свойство сборки в $(MauiVersion)CSPROJ-файл :
Это может быть полезно при использовании нерегламентированных сборок из ночного веб-канала или сборок, скачанных из запросов на вытягивание.
Кроме того, $(ApplicationIdGuid) свойство сборки можно удалить из CSPROJ-файла в .NET 8. Дополнительные сведения см. в разделе "Изменения поведения".
Прежде чем впервые создать обновленное приложение, удалите bin папки и obj папки.
Примечание
Шаблон проекта для приложения .NET MAUI в .NET 8 включает контекст, допускающий значение NULL для проекта, с $(Nullable) помощью свойства сборки. Дополнительные сведения см. в разделе Nullable.
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Отзыв о .NET MAUI
.NET MAUI — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
Присоединитесь к серии встреч для создания масштабируемых решений искусственного интеллекта на основе реальных вариантов использования с другими разработчиками и экспертами.