Veröffentlichen einer ungepackten .NET MAUI-App für Windows mit der CLI

Wenn Sie Ihre .NET Multi-Platform App UI(.NET MAUI)-App für Windows verteilen, können Sie die App und deren Abhängigkeiten in einem Ordner für die Bereitstellung in einem anderen System veröffentlichen.

Konfigurieren Sie die Einstellungen für die Projekterstellung

Fügen Sie den folgenden <PropertyGroup>-Knoten Ihrer Projektdatei hinzu. Diese Eigenschaftsgruppe wird nur verarbeitet, wenn das Ziel-Framework Windows ist und die Konfiguration auf Release eingestellt ist. Dieser Konfigurationsabschnitt wird immer dann ausgeführt, wenn ein Build oder eine Veröffentlichung im Release-Modus erfolgt.

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

Das <PropertyGroup> im Beispiel ist erforderlich, um einen Fehler im Windows App SDK zu umgehen. Weitere Informationen zu diesem Fehler finden Sie unter WindowsAppSDK Issue #3337.

Veröffentlichen

Um Ihre App zu veröffentlichen, öffnen Sie die Entwickler-Eingabeaufforderung für VS 2022 und navigieren Sie zu dem Ordner für Ihr .NET MAUI-Appsprojekt. Führen Sie den Befehl dotnet publish mit den folgenden Parametern aus:

Parameter Wert
-f Das Zielframework ist net8.0-windows{version}. Dieser Wert ist ein Windows-TFM, wie etwa net8.0-windows10.0.19041.0. Stellen Sie sicher, dass dieser Wert mit dem Wert im <TargetFrameworks>-Knoten in Ihrer .csproj-Datei identisch ist.
-c Die Buildkonfiguration ist Release.
-p:RuntimeIdentifierOverride=win10-x64
– oder –
-p:RuntimeIdentifierOverride=win10-x86
Vermeidet den in WindowsAppSDK Issue #3337 beschriebenen Fehler. Wählen Sie je nach Zielplattform die -x64- oder -x86-Version des Parameters aus.
-p:WindowsPackageType Der Pakettyp, der für nicht gepackte Apps None ist.
-p:WindowsAppSDKSelfContained Der Bereitstellungsmodus für Ihre App, der abhängig vom Framework oder eigenständig sein kann. Dieser Wert sollte true für eigenständige Apps sein. Weitere Informationen zu Framework-abhängigen Apps und eigenständigen Apps finden Sie unter Windows App SDK-Bereitstellungsübersicht.

Warnung

Der Versuch, eine .NET MAUI-Lösung zu veröffentlichen, führt dazu, dass der Befehl dotnet publish versucht, jedes Projekt in der Lösung einzeln zu veröffentlichen, was zu Problemen führen kann, wenn Sie andere Projekttypen zu Ihrer Lösung hinzugefügt haben. Daher sollte der Befehl dotnet publish auf Ihr .NET MAUI-Appsprojekt beschränkt sein.

Beispiel:

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

Hinweis

In .NET 8 wird für den Befehl dotnet publish standardmäßig die Konfiguration Release verwendet. Daher kann die Buildkonfiguration von der Befehlszeile weggelassen werden.

Beim Veröffentlichen wird die App erstellt und die ausführbare Datei in den Ordner bin\Release\net8.0-windows10.0.19041.0\win10-x64\publish kopiert. In diesem Ordner befindet sich eine exe-Datei, und das ist die erstellte App. Diese App kann gestartet werden oder der gesamte Ordner kann auf einen anderen Rechner kopiert und dort gestartet werden.

Ein wichtiger Unterschied zu einer gepackten App ist, dass sie die .NET-Runtime nicht in den Ordner aufnimmt. Das bedeutet, dass für die App die .NET-Runtime zunächst auf den Rechnern installiert werden muss, auf denen die App später ausgeführt werden soll. Um sicherzustellen, dass die App auch alle Runtimekomponenten enthält, kann das Argument -p:WindowsAppSDKSelfContained bei der Veröffentlichung angegeben werden. Beispiel:

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

Weitere Informationen zum Befehl dotnet publish finden Sie unter dotnet publish.