Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Leitfaden konzentriert sich auf eine MAUI-spezifische Stolperfalle: das Quellmanifest bei Platforms/Windows/Package.appxmanifest enthält $placeholder$-Token, die von winapp package nicht aufgelöst werden. Erstellen Sie für MAUI das Paket mithilfe des von obj\...\resizetizer\m\Package.appxmanifest generierten Manifests.
Ein konkretes MAUI-Beispielprojekt ist unter samples/maui-app verfügbar.
Voraussetzungen
- .NET SDK + MAUI-Workload (Windows):
winget install Microsoft.DotNet.SDK.10 --source winget dotnet workload install maui-windows - winapp CLI:
winget install Microsoft.winappcli --source winget
1. Erstellen einer MAUI-App und Veröffentlichen des Windows-Head
dotnet new maui -n mymauiapp --no-restore
cd mymauiapp
# The stock template targets every MAUI platform. Keep only Windows when
# maui-windows is the only installed workload.
[xml]$project = Get-Content .\mymauiapp.csproj
$propertyGroup = $project.SelectSingleNode("/*[local-name()='Project']/*[local-name()='PropertyGroup'][1]")
$project.SelectNodes("/*[local-name()='Project']/*[local-name()='PropertyGroup']/*[local-name()='TargetFrameworks']") |
ForEach-Object { $_.ParentNode.RemoveChild($_) | Out-Null }
$windowsTfm = $project.CreateElement("TargetFrameworks", $project.DocumentElement.NamespaceURI)
$windowsTfm.InnerText = "net10.0-windows10.0.19041.0"
$propertyGroup.PrependChild($windowsTfm) | Out-Null
$project.Save((Resolve-Path .\mymauiapp.csproj).Path)
dotnet publish .\mymauiapp.csproj `
-c Release `
-f net10.0-windows10.0.19041.0 `
-r win-x64 `
-p:WindowsPackageType=None `
-p:SelfContained=true `
-p:WindowsAppSDKSelfContained=true `
--output .\publish\win-x64
2. Verpacken mithilfe des generierten MAUI-Manifests
$manifest = ".\obj\Release\net10.0-windows10.0.19041.0\win-x64\resizetizer\m\Package.appxmanifest"
if (-not (Test-Path $manifest)) { throw "Resolved manifest not found: $manifest" }
winapp cert generate --manifest $manifest --if-exists overwrite
winapp package .\publish\win-x64 `
--manifest $manifest `
--executable mymauiapp.exe `
--cert .\devcert.pfx
3. Optional: Nicht paketierte Binärdateien signieren
winapp sign .\publish\win-x64\mymauiapp.exe .\devcert.pfx --password password
Validierungsskript (dev + CI)
Verwenden Sie das MAUI-Beispiel-Pester-Testskript:
.\scripts\test-samples.ps1 -Samples maui-app
Dadurch wird samples/maui-app/test.Tests.ps1 ausgeführt, wodurch eine MAUI-App von Grund auf neu erstellt, die Windows-Ausgabe veröffentlicht, der generierte Resizetizer-Manifestpfad überprüft, mit winapp ein MSIX-Paket erstellt und die nicht paketierte ausführbare Datei signiert werden.
Dasselbe Skript ist auch in maui-app unter dem Matrixeintrag .github/workflows/test-samples.yml eingebunden.
Windows developer