이 가이드는 MAUI 특유의 한 가지 함정에 초점을 맞춥니다. 원본 매니페스트(Platforms/Windows/Package.appxmanifest)에는 $placeholder$가 해석하지 못하는 winapp package 토큰이 포함되어 있습니다. MAUI의 경우 생성된 매니페스트 obj\...\resizetizer\m\Package.appxmanifest를 사용하여 패키지합니다.
구체적인 MAUI 샘플 프로젝트는 samples/maui-app에서 확인할 수 있습니다.
필수 조건
- .NET SDK + MAUI 워크로드(Windows):
winget install Microsoft.DotNet.SDK.10 --source winget dotnet workload install maui-windows - winapp CLI:
winget install Microsoft.winappcli --source winget
1. MAUI 앱 만들기 및 Windows 헤드 게시
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. 생성된 MAUI 매니페스트를 사용하여 패키지
$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. 선택 사항: 패키지되지 않은 이진 파일 서명
winapp sign .\publish\win-x64\mymauiapp.exe .\devcert.pfx --password password
유효성 검사 스크립트(dev + CI)
MAUI 샘플 Pester 테스트 스크립트를 사용합니다.
.\scripts\test-samples.ps1 -Samples maui-app
이렇게 하면 samples/maui-app/test.Tests.ps1이(가) 실행되어 처음부터 새로 MAUI 앱을 만들고, Windows용 출력을 게시하고, 생성된 Resizetizer 매니페스트 경로의 유효성을 검사하고, winapp을 사용해 MSIX를 패키징하고, 패키지되지 않은 실행 파일에 서명합니다.
동일한 스크립트도 .github/workflows/test-samples.yml 행렬 항목 아래에서 maui-app에 연결됩니다.
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
Windows developer