Co nowego w programie .NET MAUI dla platformy .NET 8

Głównym celem programu .NET MAUI na platformie .NET 8 jest jakość. Na platformie .NET 8 scalono 1618 żądań ściągnięcia, które zamknęły 689 problemów. Obejmują one zmiany z zespołu .NET MAUI, a także społeczność .NET MAUI. Te zmiany powinny spowodować znaczny wzrost jakości na platformie .NET 8.

Ważne

Ze względu na pracę z podstawowymi zależnościami zewnętrznymi, takimi jak narzędzia Xcode lub Android SDK, zasady obsługi interfejsu użytkownika aplikacji wieloplatformowej platformy .NET (.NET MAUI) różnią się od zasad obsługi platformy .NET i platformy .NET Core. Aby uzyskać więcej informacji, zobacz Zasady obsługi programu .NET MAUI.

Na platformie .NET 8 program .NET MAUI jest dostarczany jako obciążenie platformy .NET i wiele pakietów NuGet. Zaletą tego podejścia jest możliwość łatwego przypinania projektów do określonych wersji, a także umożliwia łatwe wyświetlanie podglądu nieopublikowanych lub eksperymentalnych kompilacji. Podczas tworzenia nowego projektu .NET MAUI wymagane pakiety NuGet są automatycznie dodawane do projektu.

W tym artykule wymieniono nowe funkcje programu .NET MAUI dla platformy .NET 8 oraz linki do bardziej szczegółowych informacji na temat każdego z nich.

Aby uzyskać informacje o nowościach na platformie .NET 8, zobacz Co nowego na platformie .NET 8.

Nowa funkcjonalność

Chociaż celem tej wersji programu .NET MAUI jest jakość, istnieje również kilka nowych funkcji, które umożliwiają korzystanie z nowych scenariuszy w aplikacjach.

Kontrolki

Klasyczna

Rozpoznawanie gestów

  • Nawigacja w powłoce zyskuje GoToAsync przeciążenie, które umożliwia przekazywanie danych nawigacji pojedynczego użycia, które są czyszczone po wystąpieniu nawigacji jako ShellNavigationQueryParameters obiekt. Aby uzyskać więcej informacji, zobacz Przekazywanie danych nawigacji opartych na obiektach za pomocą pojedynczego użycia.

Integracja platformy

  • Klasa Geolocation może nasłuchiwać zmian lokalizacji, gdy aplikacja znajduje się na pierwszym planie. Aby uzyskać więcej informacji, zobacz Nasłuchiwanie zmian lokalizacji.
  • Flashlight uzyskuje metodę IsSupportedAsync , która określa, czy latarka jest dostępna na urządzeniu. Aby uzyskać więcej informacji, zobacz Flashlight.
  • SensorSpeed interwały zostały ujednolicone na wszystkich platformach. Aby uzyskać więcej informacji, zobacz Uzyskiwanie dostępu do czujników urządzeń.
  • Klasa Permissions uzyskuje Permissions.Bluetooth uprawnienia, które jest uprawnieniem systemu Android 12 do wyszukiwania urządzeń Bluetooth, dzięki czemu bieżące urządzenie jest możliwe do odnalezienia na innych urządzeniach Bluetooth i komunikowanie się z już sparowanymi urządzeniami Bluetooth. Aby uzyskać więcej informacji, zobacz Uprawnienia.
  • Klasa Permissions uzyskuje Permissions.NearbyWifiDevices uprawnienie, czyli uprawnienie systemu Android 13 do uzyskiwania dostępu do pobliskich urządzeń Wi-Fi. Aby uzyskać więcej informacji, zobacz Uprawnienia.

XAML

Rozwiązywanie problemów

Różne

  • Zarządzanie oknami można rozdzielić z App klasy . Aby uzyskać więcej informacji, zobacz Zarządzanie oknami rozdzielania w klasie App.
  • Kilka czcionek systemowych można łatwo używać w aplikacjach systemu Android. Aby uzyskać więcej informacji, zobacz Korzystanie z czcionek.
  • W systemie iOS uzyskuje metodęPerformFetch, MauiUIApplicationDelegate która może zostać zastąpiona lub zużyta za pośrednictwem delegataiOSLifecycle.PerformFetch. Aby uzyskać więcej informacji, zobacz Zdarzenia cyklu życia platformy iOS.

Usuwanie i wycofywanie typów

Następujące typy lub elementy członkowskie zostały przestarzałe:

Usunięto następujące typy lub elementy członkowskie:

Zmiany zachowania

Następujące zachowanie zostało zmienione z poprzedniej wersji:

  • Użycie kontrolki Map z języka XAML wymaga teraz następującej xmlns deklaracji przestrzeni nazw: xmlns:maps="http://schemas.microsoft.com/dotnet/2021/maui/maps".
  • Buforowanie obrazów jest wyłączone w systemie Android podczas ładowania obrazu ze strumienia za pomocą ImageSource.FromStream metody . Wynika to z braku danych, z których można utworzyć rozsądny klucz pamięci podręcznej.
  • W systemie iOS strony są automatycznie przewijane, gdy klawiatura wprowadzania nietrwałego obejmie pole wprowadzania tekstu, tak aby pole było powyżej klawiatury nietrwałej wprowadzania. Metodę KeyboardAutoManagerScroll.Disconnect w Microsoft.Maui.Platform przestrzeni nazw można wywołać, aby wyłączyć to domyślne zachowanie. Metodę KeyboardAutoManagerScroll.Connect można wywołać, aby ponownie włączyć zachowanie po jej wyłączeniu.
  • Sposób ustawiania koloru karty w aplikacji powłoki zmienił się na niektórych platformach. Aby uzyskać więcej informacji, zobacz Wygląd karty.
  • Nie jest wymagane określenie wartości właściwości $(ApplicationIdGuid) kompilacji w pliku projektu aplikacji. Dzieje się tak, ponieważ aplikacje systemu Windows .NET MAUI nie wymagają już identyfikatora GUID jako identyfikatora aplikacji, a zamiast tego użyj wartości $(ApplicationId) właściwości kompilacji jako identyfikatora aplikacji. W związku z tym ten sam identyfikator aplikacji w formacie odwrotnej domeny jest teraz używany na wszystkich platformach, takich jak com.mycompany.myapp.
  • Aplikacje .NET MAUI Mac Catalyst nie są już ograniczone do 50 elementów menu na pasku menu.
  • Metoda PlatformImage.FromStream w Microsoft.Maui.Graphics przestrzeni nazw może teraz służyć do ładowania obrazów w systemie Windows zamiast używania W2DImageLoadingService klasy .
  • W systemie Android animacje przestrzegają ustawień animacji systemu. Aby uzyskać więcej informacji, zobacz Animacja podstawowa.

Wydajność

Istnieje wiele zmian wydajności w programie .NET MAUI 8. Te zmiany można podzielić na pięć obszarów:

Aby uzyskać więcej informacji, zobacz .NET 8 Performance Improvements in .NET MAUI (Ulepszenia wydajności platformy .NET 8 w programie .NET MAUI).

Uaktualnianie z platformy .NET 7 do platformy .NET 8

Aby uaktualnić projekty z platformy .NET 7 do platformy .NET 8, zainstaluj środowisko .NET 8 i pakiet roboczy .NET MAUI za pomocą programu Visual Studio 17.8 lub nowszego lub z autonomicznym instalatorem i poleceniem dotnet workload install maui .

Następnie otwórz plik csproj i zmień program Target Framework Monikers (TFMs) z 7 na 8. Jeśli używasz programu TFM, na net7.0-ios13.6 przykład upewnij się, że jest zgodna z wersją platformy lub całkowicie ją usuń. W poniższym przykładzie przedstawiono programy TFM dla projektu platformy .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>

W poniższym przykładzie przedstawiono programy TFM dla projektu platformy .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>

Jawne odwołania do pakietu należy również dodać do pliku csproj dla następujących pakietów NuGet .NET MAUI:

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

Zmienna $(MauiVersion) jest przywoływane z zainstalowanej wersji programu .NET MAUI. Możesz to zastąpić, dodając $(MauiVersion) właściwość kompilacji do pliku 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>

Może to być przydatne w przypadku korzystania z kompilacji ad hoc z nocnego kanału informacyjnego lub kompilacji pobranych z żądań ściągnięcia.

Ponadto właściwość kompilacji $(ApplicationIdGuid) można usunąć z pliku csproj na platformie .NET 8. Aby uzyskać więcej informacji, zobacz Zmiany zachowania.

Przed utworzeniem uaktualnionej aplikacji po raz pierwszy usuń bin foldery i obj .

Uwaga

Szablon projektu dla aplikacji MAUI platformy .NET na platformie .NET 8 umożliwia kontekst dopuszczalny do wartości null dla projektu z właściwością kompilacji $(Nullable) . Aby uzyskać więcej informacji, zobacz Dopuszczanie wartości null.

Zobacz też