.NET MAUI for .NET 8 の新機能

.NET 8 の .NET MAUI では、品質を重視しています。 .NET 8 では、689 件の問題を終了した 1618 個のプル要求がマージされました。 これには、.NET MAUI チームと .NET MAUI コミュニティからの変更が含まれます。 これらの変更により、.NET 8 の品質が大幅に向上します。

重要

Xcode や Android SDK Tools などの基になる外部依存関係を操作するため、.NET Multi-platform App UI (.NET MAUI) サポート ポリシーは、.NET および .NET Core サポート ポリシー とは異なります。 詳細については、「.NET MAUI のサポート ポリシー」をご覧ください。

.NET 8 では、.NET MAUI は .NET ワークロードおよび複数の NuGet パッケージとして出荷されます。 このアプローチの利点は、プロジェクトを特定のバージョンに簡単にピン留めできる一方で、リリースされていないビルドや試験的なビルドを簡単にプレビューできるようにすることです。 新しい .NET MAUI プロジェクトを作成すると、必要な NuGet パッケージがプロジェクトに自動的に追加されます。

この記事では、.NET MAUI for .NET 8 の新機能を一覧で説明し、各項目のより詳細な情報へのリンクを示します。

.NET 8 の新機能については、「.NET 8 の新機能」をご覧ください。

新しい機能

このリリースの .NET MAUI の焦点は品質ですが、アプリで新しいシナリオを可能にする新しい機能もあります。

コントロール

  • テキスト入力をサポートするコントロールは、ソフト入力キーボードの表示と非表示をサポートする拡張メソッドが追加されました。 詳細については、「ソフト入力キーボードの表示と非表示」をご覧ください。
  • ContentPage クラスには HideSoftInputOnTapped プロパティが追加されました。これは、ページ上の任意の場所をタップすると、ソフト入力キーボードが表示されている場合、非表示になるかどうかを示します。 詳細については、「ContentPag」をご覧ください。
  • BlazorWebView には、StartPath プロパティ、TryDispatchAsync メソッド、強化されたログ機能をなどが追加されました。 詳細については、「BlazorWebView を使用して .NET MAUI アプリで Blazor Web アプリをホストする」をご覧ください。
  • WebView には UserAgent プロパティが追加されました。 詳細については、「WebView」をご覧ください。
  • 自動再生やピクチャー イン ピクチャーを含む HTML5 ビデオのインライン メディア再生は、iOS の WebView でデフォルトで有効になっています。 詳細については、「iOS および Mac Catalyst でメディアの再生設定を設定する」をご覧ください。
  • 5 つの引数を受け取る Grid.Add オーバーロードが .NET MAUI に追加されました。 ただし、このメソッドは非推奨であり、Xamarin.Forms からの移行を支援するためにのみ存在します。
  • Grid には、指定した行と列のスパンを持つ指定した行と列にある Grid にビューを追加する AddWithSpan 拡張メソッドが追加されました。

デスクトップ

ジェスチャ認識エンジン

プラットフォームの統合

  • Geolocation クラスは、アプリがフォアグラウンドにあるときに場所の変更をリッスンできます。 詳細については、「場所の変更のリッスン」をご覧ください。
  • Flashlight は、デバイスで懐中電灯が使用可能かどうかを判断する IsSupportedAsync メソッドを取得します。 詳細については、「懐中電灯」をご覧ください。
  • SensorSpeed の間隔は、すべてのプラットフォームで統一されています。 詳細については、「デバイス センサーへのアクセス」をご覧ください。
  • Permissions クラスは、Permissions.Bluetooth アクセス許可を取得します。これは、Bluetooth デバイスを検索し、現在のデバイスを他の Bluetooth デバイスで検出し、既にペアリングされている Bluetooth デバイスと通信するための Android 12 アクセス許可です。 詳細については、「 アクセス許可」を参照してください。
  • Permissions クラスは、Permissions.NearbyWifiDevices アクセス許可を取得します。これは、近くの WiFi デバイスにアクセスするための Android 13 アクセス許可です。 詳細については、「 アクセス許可」を参照してください。

XAML

トラブルシューティング

その他

型の非推奨と削除

次の型またはメンバーは非推奨になりました。

次の型またはメンバーは削除されました。

動作の変更

次の動作が以前のリリースから変更されました。

  • XAML から Map コントロールを使用するには、次の xmlns 名前空間の宣言 xmlns:maps="http://schemas.microsoft.com/dotnet/2021/maui/maps" が必要になりました。
  • ImageSource.FromStream メソッドを使用してストリームからイメージを読み込むときに、Android でイメージ キャッシュが無効になります。 これは、適切なキャッシュ キーを作成するデータがないためです。
  • iOS では、ソフト入力キーボードがテキスト入力フィールドをカバーする場合、ページが自動的にスクロールされて、フィールドがソフト入力キーボードの上に配置されます。 この既定の動作は、Microsoft.Maui.Platform 名前空間内の KeyboardAutoManagerScroll.Disconnect メソッドを呼び出すことで無効にすることができます。 無効にした後、KeyboardAutoManagerScroll.Connect メソッドを呼び出すと、動作をもう一度有効にすることができます。
  • シェル アプリでタブの色を設定する方法は、一部のプラットフォームで変更されています。 詳細については、「タブの外観」をご覧ください。
  • アプリのプロジェクト ファイルで $(ApplicationIdGuid) ビルド プロパティの値を指定する必要はありません。 これは、.NET MAUI Windows アプリでは、アプリ ID として GUID が不要になり、代わりに $(ApplicationId) ビルド プロパティの値をアプリ ID として使用するためです。 そのため、com.mycompany.myapp など、すべてのプラットフォームで同じ逆ドメイン形式のアプリ ID が使用されるようになりました。
  • .NET MAUI Mac Catalyst アプリは、メニュー バーのメニュー項目が 50 個に制限されなくなりました。
  • W2DImageLoadingService クラスが使用される代わりに、Microsoft.Maui.Graphics 名前空間内の PlatformImage.FromStream メソッドが使用され、Windows に画像を読み込むようになりました。
  • Android では、アニメーションはシステム アニメーションの設定が考慮されます。 詳細については、「基本アニメーション」を参照してください。

パフォーマンス

.NET MAUI 8 には多くのパフォーマンスの変更があります。 これらの変更は、次の 5 つの領域に分類できます。

詳細については、「.NET 8 の .NET MAUI 関連のパフォーマンスの向上」をご覧ください。

.NET 7 から .NET 8 へのアップグレード

.NET 7 から .NET 8 にプロジェクトをアップグレードするには、Visual Studio 17.8 以降、またはスタンドアロン インストーラーdotnet workload install maui コマンドを使用して、.NET 8 と .NET MAUI ワークロードをインストールします。

次に、.csproj ファイルを開き、ターゲット フレームワーク モニカー (TFM) を 7 から 8 に変更します。 net7.0-ios13.6 などの TFM を使用している場合は、プラットフォームのバージョンを必ず一致させるか、完全に削除してください。 次の例は、.NET 7 プロジェクトの TFM を示しています。

<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>

次の例は、.NET 8 プロジェクトの TFM を示しています。

<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>

明示的なパッケージ参照は、次の .NET MAUI NuGet パッケージの .csproj ファイルにも追加する必要があります。

<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>

これは、夜間フィードからアドホック ビルドを使用する場合や、プル リクエストからダウンロードしたビルドを使用する場合に便利です。

さらに、.NET 8 の .csproj ファイルから $(ApplicationIdGuid) ビルド プロパティを削除することもできます。 詳細については、「動作変更」を参照してください。

アップグレードしたアプリを初めてビルドする前に、bin フォルダーと obj フォルダーを削除してください。

Note

.NET 8 の .NET MAUI アプリのプロジェクト テンプレートでは、$(Nullable) ビルド プロパティを使用してプロジェクトの null 許容コンテキストを有効にします。 詳細については、「Nullable」をご覧ください。

関連項目