비고
이 가이드는 대부분의 .NET project 형식에 대해 작동합니다. 이 단계는 WPF 같은 콘솔 및 UI 기반 프로젝트 모두에서 테스트되었습니다.
이 가이드에서는 .NET 애플리케이션에서 winapp CLI를 사용하여 패키지 ID로 디버그하고 애플리케이션을 MSIX로 패키지하는 방법을 보여 줍니다.
패키지 ID는 Windows app 모델의 핵심 개념입니다. 이를 통해 애플리케이션은 알림, 보안, AI API 등과 같은 특정 Windows API를 access, 깨끗한 설치/제거 환경 등을 사용할 수 있습니다.
필수 조건
.NET SDK: .NET SDK를 설치합니다.
winget install Microsoft.DotNet.SDK.10 --source wingetwinapp CLI: winget을
winapp통해 도구를 설치합니다.winget install Microsoft.winappcli --source winget
1. 새 .NET 앱 만들기
먼저 간단한 .NET 콘솔 애플리케이션을 만듭니다.
dotnet new console -n dotnet-app
cd dotnet-app
실행하여 모든 것이 작동하는지 확인합니다.
dotnet run
2. ID를 확인하도록 코드 업데이트
먼저 특정 Windows SDK 버전을 대상으로 project 파일을 업데이트합니다.
dotnet-app.csproj을 열고 TargetFramework을 변경하십시오.
<TargetFramework>net10.0-windows10.0.26100.0</TargetFramework>
이제 다음의 내용을 바꿉니다.Program.cs
using Windows.ApplicationModel;
try
{
var package = Package.Current;
var familyName = package.Id.FamilyName;
Console.WriteLine($"Package Family Name: {familyName}");
}
catch (InvalidOperationException)
{
Console.WriteLine("Not packaged");
}
3. ID 없이 실행
dotnet run
"패키지되지 않음"이 표시됩니다.
4. winapp CLI를 사용하여 project 초기화
winapp init 명령은 자동으로 .csproj 파일을 검색하고 .NET 관련 설정을 실행합니다.
winapp init
프롬프트가 표시되면
- 패키지 이름: Enter 키를 눌러 기본값 적용
- Publisher 이름: Enter 키를 눌러 기본값을 적용하거나 이름을 입력합니다.
- 설명: Enter 키를 눌러 기본값을 적용하거나 설명을 입력합니다.
- 버전: Enter 키를 눌러 1.0.0.0 허용
- 진입점: Enter 키를 눌러 기본값(dotnet-app.exe)을 적용합니다.
- Windows App SDK 설정: 안정, 미리 보기 또는 실험적 선택
이 명령은:
-
TargetFramework를.csproj의 지원되는 Windows TFM으로 업데이트합니다(필요한 경우). -
Microsoft.WindowsAppSDK및Microsoft.Windows.SDK.BuildToolsNuGet 패키지 참조를 추가합니다. -
appxmanifest.xml및Assets폴더를 앱 ID에 대해 만듭니다.
비고
네이티브/C++ 프로젝트와 달리 .NET 흐름은 winapp.yaml 파일을 만들지 않습니다. NuGet 패키지는 . .csproj를 통해 직접 관리됩니다. 복제 후 패키지를 복원하는 데 사용합니다 dotnet restore .
5. ID를 사용하여 디버그
실행 파일을 빌드합니다.
dotnet build -c Debug디버그 ID 적용:
winapp create-debug-identity .\bin\Debug\net10.0-windows10.0.26100.0\dotnet-app.exe실행 파일을 실행합니다 (다시 빌드할 수 있으므로 사용하지
dotnet run마세요.).\bin\Debug\net10.0-windows10.0.26100.0\dotnet-app.exe
다음을 확인해야 합니다.
Package Family Name: dotnet-app_12345abcde
디버그 ID 자동화(선택 사항)
.csproj 파일에 이 대상을 추가합니다.
<Target Name="ApplyDebugIdentity" AfterTargets="Build" Condition="'$(Configuration)' == 'Debug'">
<Exec Command="winapp create-debug-identity "$(TargetDir)$(TargetName).exe""
WorkingDirectory="$(ProjectDir)"
IgnoreExitCode="false" />
</Target>
6. Windows App SDK 사용
winapp init
Microsoft.WindowsAppSDK을(를) 실행하면 NuGet 패키지 참조로 이미 추가됩니다. Windows App 런타임 API를 사용하도록 Program.cs 업데이트합니다.
using Windows.ApplicationModel;
class Program
{
static void Main(string[] args)
{
try
{
var package = Package.Current;
var familyName = package.Id.FamilyName;
Console.WriteLine($"Package Family Name: {familyName}");
var runtimeVersion = Microsoft.Windows.ApplicationModel.WindowsAppRuntime.RuntimeInfo.AsString;
Console.WriteLine($"Windows App Runtime Version: {runtimeVersion}");
}
catch (InvalidOperationException)
{
Console.WriteLine("Not packaged");
}
}
}
7. MSIX를 사용한 패키지
릴리스용 빌드:
dotnet build -c Release개발 인증서 생성:
winapp cert generate --if-exists skip패키지 및 서명:
winapp pack .\bin\Release\net10.0-windows10.0.26100.0 --manifest .\appxmanifest.xml --cert .\devcert.pfx인증서 설치 (관리자 권한으로 실행):
winapp cert install .\devcert.pfx생성된 파일을 두 번 클릭하여
.msix합니다.
팁 (조언)
- Microsoft Store에서 MSIX에 서명합니다. 제출하기 전에 서명할 필요가 없습니다.
- 각 아키텍처
dotnet build -c Release -r win-x64에 대해 별도의 MSIX 패키지가 필요할 수 있습니다. 또는dotnet build -c Release -r win-arm64.
MSIX 패키징 자동화(선택 사항)
이 대상을 .csproj에 추가하세요.
<Target Name="PackageMsix" AfterTargets="Build" Condition="'$(Configuration)' == 'Release'">
<Exec Command="winapp pack "$(TargetDir.TrimEnd('\'))" --cert "$(ProjectDir)devcert.pfx""
WorkingDirectory="$(ProjectDir)"
IgnoreExitCode="false" />
</Target>
관련 토픽
Windows developer