단일 프로젝트 MSIX를 사용하여 앱 패키지

단일 프로젝트 MSIX는 별도의 패키징 프로젝트를 사용하지 않고도 Windows 앱 SDK를 사용하여 MSIX 패키지 데스크톱 앱을 빌드할 수 있는 기능입니다. 이 기능은 현재 이러한 시나리오에 사용할 수 있는 독립 실행형 Visual Studio 확장으로 사용할 수 있습니다.

  • Windows 앱 SDK에서 빈 앱 패키지(데스크톱의 WinUI 3) 템플릿을 사용하여 새 데스크톱 프로젝트를 만듭니다. 이러한 프로젝트는 별도의 패키징 프로젝트를 사용하지 않고 MSIX 패키지에 앱을 빌드하도록 구성됩니다.
  • 별도의 패키징 프로젝트가 더 이상 필요하지 않도록 Windows App SDK를 사용하여 만든 기존 데스크톱 WinUI 3 프로젝트를 수정합니다.

패키징 프로젝트와 단일 프로젝트 비교

개요

이 섹션에서는 단일 프로젝트 MSIX 기능에 대한 몇 가지 중요한 세부 정보를 소개합니다.

이점

단일 프로젝트 MSIX 기능을 도입하기 전에 MSIX 패키지 데스크톱 앱을 빌드하기 위해 솔루션에 앱 프로젝트와 별도의 Windows 애플리케이션 패키징 Project두 개의 프로젝트가 필요했습니다. 단일 프로젝트 MSIX 기능을 사용하면 앱 프로젝트만 사용하여 앱을 개발하고 빌드할 수 있습니다. 이렇게 하면 보다 클리너한 프로젝트 구조와 보다 간단한 개발 환경을 제공합니다. 예를 들어 더 이상 별도의 패키징 프로젝트를 시작 프로젝트로 선택할 필요가 없습니다.

지원되는 프로젝트 형식

단일 프로젝트 MSIX 기능의 현재 릴리스는 Windows 앱 SDK의 데스크톱 프로젝트(C# 및 C++)에서 WinUI 3을 지원합니다.

제한 사항

단일 프로젝트 MSIX는 생성된 MSIX 패키지에서 단일 실행 파일만 지원합니다. 여러 실행 파일을 단일 MSIX 패키지로 결합해야 하는 경우 솔루션에서 Windows 애플리케이션 패키징 Project 계속 사용해야 합니다.

단일 프로젝트 MSIX 패키징 도구 설치

새 MSIX 패키지 WinUI 3 앱을 만드는 데 사용할 수 있는 프로젝트 템플릿을 포함하는 단일 프로젝트 MSIX 패키징 도구는 Visual Studio Windows 앱 SDK 확장에 포함되어 있습니다. SDK에 대한 설치 지침은 개발자 도구 설치를 참조하세요.

Windows 앱 SDK 0.8 및 C# 버전의 1.0 미리 보기 3: 단일 프로젝트 MSIX 패키징 도구 확장을 별도로 설치해야 합니다.

새 프로젝트 만들기

Windows 앱 SDK 1.0 미리 보기 2를 사용하는 경우 빈 앱 패키지(데스크톱의 WinUI 3) 템플릿을 사용하여 단일 프로젝트 MSIX 지원을 포함하는 새 WinUI 3 기반 프로젝트를 만들 수 있습니다. 자세한 내용은 첫 번째 WinUI 3 앱 만들기를 참조하세요.

기존 프로젝트 수정

MSIX 패키지를 빌드하는 데 필요한 패키지 매니페스트 및 기타 지원이 패키징 프로젝트가 아닌 애플리케이션 프로젝트에 있도록 Windows App SDK를 사용하여 만든 기존 데스크톱 WinUI 3 프로젝트를 수정하려면 다음 단계를 수행합니다.

1단계: 기존 패키징 프로젝트 만들기 또는 열기

Windows 애플리케이션 패키징 Project포함하는 데스크톱 앱의 WinUI 3에 대한 솔루션이 이미 있는 경우 지금 Visual Studio 해당 솔루션을 엽니다.

그렇지 않으면 첫 번째 WinUI 3 앱 만들기의 지침에 따라 Visual Studio 데스크톱 프로젝트에서 새 WinUI 3을 만듭니다.

패키징 프로젝트를 사용하는 프로젝트

2단계: 애플리케이션 프로젝트 설정 편집

다음으로, 단일 프로젝트 MSIX 기능을 사용하도록 일부 구성 설정을 편집합니다. 프로젝트 형식 및 Visual Studio 버전에 따라 다른 지침이 있습니다.

  1. 솔루션 탐색기 애플리케이션의 프로젝트 노드를 두 번 클릭하여 XML 편집기에서 .csproj 파일을 엽니다. main 요소에 다음 XML을 <PropertyGroup> 추가합니다.

    <EnablePreviewMsixTooling>true</EnablePreviewMsixTooling>
    <PublishProfile>Properties\PublishProfiles\win10-$(Platform).pubxml</PublishProfile>
    

    완료되면 요소가 다음과 <PropertyGroup> 유사하게 표시됩니다.

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <OutputType>WinExe</OutputType>
        <TargetFramework>net5.0-windows10.0.19041.0</TargetFramework>
        ...
        <UseWinUI>true</UseWinUI>
        <EnablePreviewMsixTooling>true</EnablePreviewMsixTooling>
        <PublishProfile>Properties\PublishProfiles\win10-$(Platform).pubxml</PublishProfile>
      </PropertyGroup>
    
  2. 변경 내용을 저장하고 .csproj 파일을 닫습니다.

  3. Visual Studio 버전에 따라 다음 절차 중 하나를 수행합니다.

    Visual Studio 2019의 경우:

    1. 솔루션 탐색기 애플리케이션의 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.

    2. 디버그 탭을 선택하고 Launch 속성을 MsixPackage 로 설정합니다. 첫 번째 시도에서 되돌아가면 이 옵션을 두 번 선택해야 할 수 있습니다.

      MsixProject 옵션 사용

    3. 변경 내용을 저장합니다.

    Visual Studio 2022의 경우:

    1. 솔루션 탐색기 애플리케이션의 프로젝트 노드 아래에 있는 속성 폴더를 마우스 오른쪽 단추로 클릭하고 새 항목 추가를 > 선택합니다.

    2. 텍스트 파일을 선택하고, 새 파일의 이름을 launchSettings.json으로 지정하고, 추가를 클릭합니다. 새 파일이 애플리케이션 프로젝트의 Properties 폴더에 있는지 확인합니다.

    3. 다음 설정을 새 파일에 복사합니다. 시나리오에 필요한 대로 값을 자유롭게 변경할 수 있습니다. MyApp 값은 임의의 문자열일 수 있습니다. 애플리케이션의 이름과 일치하지 않아도 됩니다.

      {
          "profiles": {
              "MyApp": {
                  "commandName": "MsixPackage",
                  "commandLineArgs": "", /* Command line arguments to pass to the app. */
                  "alwaysReinstallApp": false, /* Uninstall and then reinstall the app. All information about the app state is deleted. */
                  "remoteDebugEnabled": false, /* Indicates that the debugger should attach to a process on a remote machine. */
                  "allowLocalNetworkLoopbackProperty": true, /* Allow the app to make network calls to the device it is installed on. */
                  "authenticationMode": "Windows", /* The authentication scheme to use when connecting to the remote machine. */
                  "doNotLaunchApp": false, /* Do not launch the app, but debug my code when it starts. */
                  "remoteDebugMachine": "", /* The name of the remote machine. */
                  "nativeDebugging": false /* Enable debugging for managed and native code together, also known as mixed-mode debugging. */
              }
          }
      }
      
    4. launchSettings.json 파일을 저장하고 닫습니다.

3단계: 애플리케이션 프로젝트로 파일 이동

다음으로, 몇 가지 중요한 파일을 애플리케이션 프로젝트로 이동합니다. 프로젝트 형식 및 Visual Studio 버전에 따라 다른 지침이 있습니다.

  1. 파일 탐색기 Package.appxmanifest 파일 및 Images 폴더를 패키징 프로젝트에서 애플리케이션 프로젝트로 이동합니다. 이 파일과 폴더를 애플리케이션 프로젝트의 폴더 계층 구조의 최상위 수준에 배치합니다.
  2. 솔루션에서 패키징 프로젝트를 제거합니다.

파일을 주 앱으로 이동하는 그림

4단계: 구성 관리자 배포 사용

  1. 빌드 -> 구성 관리자 를 차례로 선택합니다.
  2. 구성 관리자 에서 구성 및 플랫폼의 모든 조합(예: 디버그x86, 디버그arm64, 릴리스x64 등)에 대한 배포 확인란을 클릭합니다.

    참고

    배포 확인란과 동일한 행에 있는 구성플랫폼 드롭다운 대신 위쪽에 있는 활성 솔루션 구성활성 솔루션 플랫폼 드롭다운을 사용해야 합니다.

구성 관리자 배포 사용

5단계: 앱 배포

애플리케이션 프로젝트를 빌드하고 배포합니다. Visual Studio MSIX 패키지에 애플리케이션을 빌드하고 패키지를 설치한 다음 애플리케이션을 실행합니다.

6단계: 게시할 앱 패키지

Visual Studio 패키지 & 게시 명령을 사용하여 스토어에 게시할 애플리케이션을 패키지합니다.

피드백 제공

피드백을 보내거나, 문제를 보고하거나, 단일 프로젝트 MSIX 기능에 대해 질문하려면 Windows 앱 SDK GitHub 리포지토리에토론 또는 문제를 게시하세요.