Visual Studio에서 앱 패키지 매니페스트를 생성하는 방법
Visual Studio 사용하여 프로젝트를 빌드할 때 Visual Studio 유니버설 Windows 플랫폼(UWP) 앱을 배포, 표시 또는 업데이트하는 데 필요한 정보를 포함하는 패키지 매니페스트(AppxManifest.xml)를 생성합니다.
Visual Studio 사용하여 앱을 개발하는 경우 발생하는 두 가지 종류의 앱 패키지 매니페스트 파일이 있습니다.
- Package.appxmanifest
개발자가 게시자 정보, 로고, 프로세서 아키텍처 등과 같은 앱의 세부 정보를 구성하는 데 사용하는 XML 스타일 파일입니다. 이는 앱 개발 중에 사용되는 앱 패키지 매니페스트의 쉽게 구성할 수 있는 임시 버전입니다. - AppxManifest.xml
이 파일은 Visual Studio 빌드 프로세스에서 생성되며 Package.appxmanifest 파일의 정보를 기반으로 합니다. 게시된 앱 및 테스트용으로 로드된 앱에 사용되는 앱 패키지 매니페스트의 최종 버전입니다. Package.appxmanifest 파일에 대한 업데이트가 있는 경우 프로젝트를 다시 빌드하여 AppxManifest.xml 파일의 업데이트를 확인해야 합니다.
패키징 프로세스에 대한 개요는 Visual Studio 사용하여 UWP 앱 패키징을 참조하세요.
응용 프로그램 매니페스트 유효성 검사
응용 프로그램을 게시하기 전에 Visual Studio 유효성 검사가 실패하도록 하는 오류를 모두 수정해야 합니다. Visual Studio에서는 매니페스트를 생성할 때 다음과 같이 응용 프로그램의 유효성을 검사합니다.
- 구문 유효성 검사
Visual Studio에서는 응용 프로그램 매니페스트의 모든 데이터가 응용 프로그램 매니페스트 스키마를 따르는지 확인합니다. - 의미 체계 유효성 검사
Visual Studio에서는 정보의 컨텍스트에 따라 예상되는 데이터에 대한 지침을 제공합니다.
참고
이러한 섹션에서 찾고 있는 필드를 언급하지 않으면 별도로 구성되었을 수 있는 데이터 또는 매니페스트 스키마의 기본값에서 생성됩니다.
매니페스트 콘텐츠 생성
Visual Studio 앱 패키지에 대한 AppxManifest.xml 파일을 생성할 때 다음 표의 필드를 채웁니다.
ID
Identity
앱 매니페스트의 섹션에는 다음 필드가 포함되어 있습니다.
필드 | Description |
---|---|
Name | 다음 시나리오에서 다르게 채워지는 패키지의 이름입니다.
|
Publisher | 게시자 이름입니다. 이 이름은 다음 시나리오에 따라 서로 다르게 채워집니다.
|
버전 | 빌드 중인 앱의 버전입니다. 일반적으로 앱이 수정되고 패키지될 때마다 증가합니다. Version 올바르게 증가되도록 하려면 스토어를 호출할 때 제공된 대화 상자를 사용합니다. -> 앱 패키지 만들기... |
ProcessorArchitecture | 프로젝트에 대해 지정한 빌드 구성에 따라 생성되는 값입니다. 프로젝트의 프로젝트 참조 또는 파일 참조가 앱 패키지와 다른 특정 아키텍처를 대상으로 하는 경우 빌드 오류가 throw되고 모든 참조에 대해 작동하도록 앱 패키지의 대상 아키텍처를 변경해야 합니다. |
출력 XML의 Identity
예는 다음과 같습니다.
<Identity Name="Microsoft.UWPAppExample"
Publisher="CN=Microsoft Corporation"
Version="1.0.0.0"
ProcessorArchitecture="x86" />
속성
앱 매니페스트의 섹션에는 Properties
다음 표의 필드가 포함되어 있습니다.
필드 | Description |
---|---|
PublisherDisplayName | 이 문자열은 다음 시나리오에서 다르게 채워집니다.
|
DisplayName | 이 문자열은 다음 시나리오에 따라 서로 다르게 채워집니다.
|
로고 | Visual Studio 템플릿은 기본적으로 사용됩니다Assets\StoreLogo.png . 이 값은 Package.appxmanifest 파일의 개발자가 사용자 지정해야 합니다. |
출력 XML의 Properties
예는 다음과 같습니다.
<Properties>
<DisplayName>UWP App Example</DisplayName>
<PublisherDisplayName>Microsoft Corporation</PublisherDisplayName>
<Logo>Assets\StoreLogo.png</Logo>
</Properties>
애플리케이션
앱 매니페스트에는 클라이언트의 타일에 표시되는 표시 이름이 각각 있는 여러 Application
요소가 포함될 수 있습니다. 앱 매니페스트의 섹션에는 Application
다음 표의 필드가 포함되어 있습니다.
필드 | 설명 |
---|---|
Id | 이 문자열은 다음 시나리오에 따라 서로 다르게 채워집니다.
|
실행 파일 | 이 필드의 값은 프로젝트 어셈블리의 출력 이름입니다. 소스 매니페스트 파일(Package.appxmanifest)에 사용되는 실행 파일 토큰 $targetnametoken$.exe 매니페스트가 빌드될 때 실제 파일 이름으로 바뀝니다. |
EntryPoint | 이 값은 생성된 Executable 값과 값을 기반으로 합니다 Id . |
출력 예제 Application
:
<Applications>
<Application Id="App" Executable="UWPAppExample.exe" EntryPoint="UWPAppExample.App">
<!-- Other elements configured within the Application, such as Extensions, VisualElements, etc. -->
</Applications>
PackageDependency
이 섹션에는 이 PackageDependency
패키지에 대한 모든 Windows 구성 요소 라이브러리 종속성이 포함되어 있습니다. 예를 들어 프로젝트에 WinJS에 대한 참조가 있는 경우 Visual Studio 매니페스트가 생성될 때 종속성의 패키지 ID 정보를 검색합니다. 그런 다음 Visual Studio 이 섹션을 각 종속 패키지의 Name
필드와 MinVersion
필드로 채웁니다.
네이티브 C++ 프로젝트에서 Visual Studio Visual C/C++ 런타임에 대한 참조를 추가합니다.
<Dependencies>
<PackageDependency Name="Microsoft.VCLibs.140.00.Debug" MinVersion="14.0.30035.0" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" />
</Dependencies>
등록 확장 Windows 런타임
앱에 대한 Windows 런타임 구성 요소를 구현할 수 있지만 올바르게 실행되려면 해당 구성 요소를 운영 체제에 등록해야 합니다. Windows 런타임 구성 요소를 등록하려면 WinMD 파일 및 앱 매니페스트에 등록 정보를 입력해야 합니다. 프로젝트가 Windows 런타임 구성 요소를 구현하는 경우 프로젝트의 빌드 출력에는 WinMD 파일이 포함됩니다. Visual Studio WinMD 파일에서 Windows 런타임 등록 정보를 추출하고 앱 매니페스트에 적절한 Extension
요소를 생성합니다.
시스템에서는 두 가지 형태의 서버인 .dll 서버(in-process) 및 .exe 서버(out-of-process)를 지원합니다. 이러한 서버에는 응용 프로그램 매니페스트에 복사되어야 하는 유사하지만 서로 다른 등록 정보가 필요합니다. Visual Studio에서는 .dll 서버에 대한 매니페스트만 생성할 수 있으며 DLLServer 확장이 .dll 서버를 등록하는 데 필요합니다. 응용 프로그램 매니페스트의 다음 값은 DLLServer 확장을 생성하기 위해 WinMD 파일에서 가져옵니다.
- DllPath
- ActivatableClassId
- ThreadingModel
- ActivatableClass(ActivatableClassId 특성)
다음은 출력 XML의 예입니다.
<extension category="Microsoft.Windows.ActivatableClass">
<dllServer>
<dllPath>Fabrikam.dll</dllPath>
<activatableClass activatableClassId="Fabrikam.MyClass" threadingModel="sta" />
</dllServer>
</extension>
이 항목에 대한 자세한 내용은 Windows 런타임 구성 요소를 참조하세요.
리소스
이 섹션에는 Resources
애플리케이션에서 지원하는 각 언어에 대한 항목이 포함되어 있습니다. 앱 매니페스트에 하나 이상의 리소스 언어가 지정되어 있어야 합니다. Visual Studio에서는 프로젝트에서 지역화 정보를 기반으로 지원되는 언어의 목록을 자동으로 생성합니다. 원본 매니페스트 파일(Package.appxmanifest)에 사용되는 리소스 언어 토큰 "x-generate"는 매니페스트가 빌드될 때 실제 언어 코드로 바뀝니다. 다음은 출력 XML의 예입니다.
<Resources>
<Resource Language="en-us">
<Resource Language="fr-fr">
</Resources>
목록의 첫 번째 항목은 응용 프로그램의 기본 언어입니다.
TargetDeviceFamily
섹션에는 TargetDeviceFamily
다음 필드가 포함되어 있습니다.
- Name
- MinVersion
- MaxVersionTested
<Dependencies>
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.17763.0" MaxVersionTested="10.0.22000.0" />
</Dependencies>
이러한 요소는 MSBuild 속성에서 채워집니다.
참고 항목
Visual Studio를 사용하여 UWP 앱 패키징
앱 패키지 아키텍처
Windows 10 패키지 매니페스트 스키마 참조