Новые возможности .NET MAUI для .NET 8

Основное внимание на .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 8 см. в статье "Новые возможности.NET 8".

Новые функции

Хотя основное внимание в этом выпуске .NET MAUI является качеством, есть также некоторые новые функции, которые позволяют создавать новые сценарии в приложениях.

Элементы управления

  • Элементы управления, поддерживающие методы расширения ввода текста, поддерживающие скрытие и отображение клавиатуры обратимого ввода. Дополнительные сведения см. в разделе "Скрытие и отображение клавиатуры обратимого ввода".
  • Класс ContentPage получает HideSoftInputOnTapped свойство, указывающее, будет ли касание в любом месте страницы вызвать скрытие клавиатуры обратимого ввода, если она видна. Дополнительные сведения см. в разделе ContentPage.
  • BlazorWebViewStartPath получает свойство, TryDispatchAsync метод и расширенные возможности ведения журнала. Дополнительные сведения см. в разделе "Размещение веб-приложения Blazor" в приложении .NET MAUI с помощью BlazorWebView.
  • WebViewUserAgent получает свойство. Дополнительные сведения см. в разделе WebView.
  • Встроенное воспроизведение видео HTML5, включая автозапуск и изображение на рисунке, по умолчанию было включено для WebView iOS. Дополнительные сведения см. в разделе "Настройка параметров воспроизведения мультимедиа" в iOS и Mac Catalyst.
  • Перегрузка Grid.Add , принимающую 5 аргументов, была добавлена обратно в .NET MAUI. Однако этот метод устарел и доступен только для помощи в миграции из Xamarin.Forms.
  • GridAddWithSpan получает метод расширения, который добавляет представление в Grid указанную строку и столбец с указанными диапазонами строк и столбцов.

Настольный компьютер

Распознаватели жестов

  • Навигация оболочки получает перегрузку GoToAsync , которая позволяет передавать данные навигации с одним использованием, которые очищаются после того, как навигация была выполнена ShellNavigationQueryParameters в качестве объекта. Дополнительные сведения см. в статье Pass single use object-based navigation data.

Интеграция платформы

  • Класс Geolocation может прослушивать изменения расположения, когда приложение находится на переднем плане. Дополнительные сведения см. в разделе "Прослушивание изменений расположения".
  • Flashlight получает метод, определяющий IsSupportedAsync , доступен ли фонарик на устройстве. Дополнительные сведения см. в разделе "Фонарик".
  • SensorSpeed интервалы были унифицированы на всех платформах. Дополнительные сведения см. в разделе "Доступ к датчикам устройств".
  • Класс Permissions получает Permissions.Bluetooth разрешение, которое является разрешением Android 12 для поиска устройств Bluetooth, что делает текущее устройство обнаруживаемым на других устройствах Bluetooth и обмен данными с уже сопряженными устройствами Bluetooth. Дополнительные сведения см. в разделе Разрешения.
  • Класс Permissions получает Permissions.NearbyWifiDevices разрешение, которое является разрешением Android 13 для доступа к близлежащим устройствам WiFi. Дополнительные сведения см. в разделе Разрешения.

XAML

Устранение неполадок

Разное

  • Управление окнами можно отделить от App класса. Дополнительные сведения см. в разделе "Управление окнами Decouple" из класса App.
  • Несколько системных шрифтов можно легко использовать в приложениях Android. Дополнительные сведения см. в разделе "Использование шрифтов".
  • В iOS MauiUIApplicationDelegate получает PerformFetch метод, который можно переопределить или использовать с помощью делегата iOSLifecycle.PerformFetch . Дополнительные сведения см. в разделе о событиях жизненного цикла платформы iOS.

Удаление и удаление типов

Не рекомендуется использовать следующие типы или элементы:

Удалены следующие типы или члены:

Изменения в работе

Следующее поведение изменилось с предыдущего выпуска:

  • Теперь для использования элемента управления из 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 8 в .NET MAUI.

Обновление с .NET 7 до .NET 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:

<TargetFrameworks>net7.0-android;net7.0-ios;net7.0-maccatalyst;net7.0-tizen</TargetFrameworks>
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net7.0-windows10.0.19041.0</TargetFrameworks>

В следующем примере показаны TFMs для проекта .NET 8:

<TargetFrameworks>net8.0-android;net8.0-ios;net8.0-maccatalyst;net8.0-tizen</TargetFrameworks>
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net8.0-windows10.0.19041.0</TargetFrameworks>

Явные ссылки на пакеты также следует добавить в CSPROJ-файл для следующих пакетов NuGet .NET MAUI:

<ItemGroup>
    <PackageReference Include="Microsoft.Maui.Controls" Version="$(MauiVersion)" />
    <PackageReference Include="Microsoft.Maui.Controls.Compatibility" Version="$(MauiVersion)" />
</ItemGroup>

Эта $(MauiVersion) переменная ссылается на установленную версию .NET MAUI. Это можно переопределить, добавив свойство сборки в $(MauiVersion)CSPROJ-файл :

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFrameworks>net8.0-android;net8.0-ios;net8.0-maccatalyst</TargetFrameworks>
        <UseMaui>True</UseMaui>
        <MauiVersion>8.0.3</MauiVersion>
    </PropertyGroup>
</Project>

Это может быть полезно при использовании нерегламентированных сборок из ночного веб-канала или сборок, скачанных из запросов на вытягивание.

Кроме того, $(ApplicationIdGuid) свойство сборки можно удалить из CSPROJ-файла в .NET 8. Дополнительные сведения см. в разделе "Изменения поведения".

Прежде чем впервые создать обновленное приложение, удалите bin папки и obj папки.

Примечание.

Шаблон проекта для приложения .NET MAUI в .NET 8 включает контекст, допускающий значение NULL для проекта, с $(Nullable) помощью свойства сборки. Дополнительные сведения см. в разделе Nullable.

См. также