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.