次の方法で共有


CLI を使用して Windows 用のパッケージ化されていない .NET MAUI アプリを発行する方法

Windows 用の .NET マルチプラットフォーム アプリ UI (.NET MAUI) アプリを配信する場合は、アプリとその依存関係をフォルダに発行して、別のシステムにデプロイすることができます。

プロジェクトのビルド設定を構成する

次の <PropertyGroup> ノードをプロジェクト ファイルに追加します。 このプロパティ グループは、ターゲット フレームワークが Windows で、構成が Release に設定されている場合にのみ処理されます。 この構成セクションは、Release モードのビルドまたは発行のたびに実行されます。

<PropertyGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows' and '$(RuntimeIdentifierOverride)' != ''">
    <RuntimeIdentifier>$(RuntimeIdentifierOverride)</RuntimeIdentifier>
</PropertyGroup>

この例の <PropertyGroup> は、Windows アプリ SDK のバグを回避するために必要です。 このバグの詳細については「WindowsAppSDK の問題 #3337」をご覧ください。

公開

アプリを発行するには、[開発者コマンド プロンプト for VS 2022] ターミナルを開き、.NET MAUI アプリ プロジェクトのフォルダーに移動します。 次のパラメーターを指定して dotnet publish コマンドを実行します。

パラメーター
-f net8.0-windows{version} であるターゲット フレームワーク。 この値は、net8.0-windows10.0.19041.0 などの Windows TFM です。 この値が .csproj ファイル内の <TargetFrameworks> ノードの値と同じであることを確認します。
-c Release であるビルド構成。
-p:RuntimeIdentifierOverride=win10-x64
または
-p:RuntimeIdentifierOverride=win10-x86
WindowsAppSDK の問題 #3337」で詳しく説明されているバグを回避します。 ターゲット プラットフォームに基づいて、パラメーターの -x64 バージョンまたは -x86 バージョンを選択します。
-p:WindowsPackageType パッケージの種類 (パッケージ化されていないアプリの場合は None)。
-p:WindowsAppSDKSelfContained アプリのデプロイ モード (フレームワーク依存または自己完結型)。 自己完結型アプリの場合、この値は true です。 フレームワーク依存アプリと自己完結型アプリの詳細については、「Windows アプリ SDK 展開の概要」を参照してください。

警告

.NET MAUI ソリューションを公開しようとすると、dotnet publish コマンドがソリューション内の各プロジェクトを個別に公開しようとするため、他のプロジェクト タイプをソリューションに追加した場合に問題が発生する可能性があります。 そのため、dotnet publish コマンドのスコープは .NET MAUI アプリ プロジェクトに設定する必要があります。

次に例を示します。

dotnet publish -f net8.0-windows10.0.19041.0 -c Release -p:RuntimeIdentifierOverride=win10-x64 -p:WindowsPackageType=None

.NET 8 では、dotnet publish コマンドの既定値は Release 構成になります。 そのため、コマンド ラインからビルド構成を省略できます。

発行の結果、アプリがビルドされ、実行可能ファイルが bin\Release\net8.0-windows10.0.19041.0\win10-x64\publish フォルダーにコピーされます。 このフォルダーには exe ファイルがあり、それがビルドされたアプリです。 このアプリを起動することも、フォルダー全体を別のコンピューターにコピーしてそこで起動することもできます。

パッケージ化されたアプリとの重要な違いは、フォルダーに .NET ランタイムが含まれない点です。 つまり、アプリを使用するには、最終的にアプリを実行するマシンに .NET ランタイムを最初にインストールする必要があります。 アプリにすべてのランタイム コンポーネントも確実に含まれるようにするには、発行時に -p:WindowsAppSDKSelfContained 引数を指定します。 次に例を示します。

dotnet publish -f net8.0-windows10.0.19041.0 -c Release -p:RuntimeIdentifierOverride=win10-x64 -p:WindowsPackageType=None -p:WindowsAppSDKSelfContained=true

dotnet publish コマンドの詳細については、「dotnet publish」を参照してください。