MakePri.exe를 사용하여 수동으로 리소스 컴파일

MakePri.exe는 PRI 파일을 만들고 덤프하는 데 사용할 수 있는 명령줄 도구입니다. Microsoft Visual Studio 내에서 MSBuild의 일부로 통합되었지만 패키지를 수동으로 또는 사용자 지정 빌드 시스템을 통해 만드는 데 유용할 수 있습니다.

참고 항목

MakePri.exe는 Windows SDK(소프트웨어 개발 키트)를 설치하는 동안 UWP 관리 앱용 Windows SDK 옵션을 선택하면 설치됩니다. 경로 %WindowsSdkDir%bin\<WindowsTargetPlatformVersion>\x64\makepri.exe에 설치됩니다(다른 아키텍처의 이름이 지정된 폴더에도 있음). 예들 들어 C:\Program Files (x86)\Windows Kits\10\bin\10.0.17713.0\x64\makepri.exe입니다.

섹션 내용

주제 설명
MakePri.exe 명령줄 옵션 MakePri.exe에는 createconfig, dump, new, resourcepackversioned 명령 집합이 있습니다. 이 항목에서는 이들의 사용에 대한 명령줄 옵션을 자세히 설명합니다.
MakePri.exe 구성 파일 이 항목에서는 MakePri.exe XML 구성 파일 스키마를 설명합니다.
MakePri.exe 형식별 인덱서 이 항목에서는 리소스 인덱스를 생성하기 위해 MakePri.exe 도구에서 사용하는 형식별 인덱서에 대해 설명합니다.

MakePri.exe 명령줄 옵션

MakePri.exe에는 createconfig, dump, new, resourcepackversioned 명령 집합이 있습니다. 이 사용에 대한 자세한 내용은 MakePri.exe 명령줄 옵션을 참조하세요.

MakePri.exe 구성

PRI XML 구성 파일은 인덱싱하는 리소스와 그 방법을 제어합니다. 구성 XML의 스키마는 MakePri.exe 구성에 설명되어 있습니다.

형식별 인덱서

MakePri.exe는 일반적으로 new, versioned, resourcepack 옵션과 함께 사용됩니다. 이러한 경우 원본 파일을 인덱싱하여 리소스 인덱스를 생성합니다. MakePri.exe는 다른 소스 리소스 파일 또는 리소스 컨테이너를 읽기 위해 다양한 개별 인덱서를 사용합니다. 가장 단순한 인덱서는 폴더 인덱서이며 .jpg또는 .png 이미지 등의 리소스에 대한 폴더의 콘텐츠를 인덱싱합니다. 자세한 내용은 MakePri.exe 형식별 인덱서를 참조하세요.

MakePri.exe 경고 및 오류 메시지

'<언어>' 언어에 대한 리소스를 찾았지만 기본 언어 '<언어>'에 대한 리소스를 찾을 수 없습니다. 기본 언어를 변경하거나 기본 언어로 리소스를 한정합니다.

이 경고는 MakePri.exe 또는 MSBuild가 언어 한정자로 표시된 것처럼 보이지만 기본 언어에 대한 후보를 찾을 수 없는 지정된 명명된 리소스에 대한 파일 또는 문자열 리소스를 검색할 때 표시됩니다. 파일 및 폴더 이름에 한정자를 사용하는 프로세스는 언어, 규모 및 기타 한정자에 맞게 리소스 조정에 설명되어 있습니다. 파일 또는 폴더에는 언어 이름이 있을 수 있지만 정확한 기본 언어에 대해 정규화된 리소스가 검색되지 않습니다. 예를 들어 프로젝트가 "en-US"를 기본 언어로 사용하고 "de/logo.png"라는 파일이 있지만 기본 언어인 "en-US"가 표시된 파일이 없는 경우 이 경고가 표시됩니다. 이 경고를 제거하기 위해 파일 또는 문자열 리소스를 기본 언어로 정규화하거나 기본 언어를 변경해야 합니다. 기본 언어를 변경하려면 Visual Studio에서 솔루션을 연 채로 Package.appxmanifest를 엽니다. 애플리케이션 탭에서 기본 언어가 제대로 설정되어 있는지 확인합니다(예: "en" 또는 "en-US").

'<리소스 식별자>'에 대한 기본 또는 중립 리소스가 제공되지 않습니다. 애플리케이션은 리소스를 검색할 때 특정 사용자 구성에 대해 예외를 throw할 수 있습니다.

이 경고는 MakePri.exe 또는 MSBuild가 리소스가 불분명한 언어 한정자로 표시된 파일이나 리소스를 검색할 때 표시됩니다. 한정자가 있지만 실행 시 특정 리소스 후보가 해당 리소스 식별자에 대해 반환될 수 있다는 보장이 없습니다. 특정 언어, 홈 지역 또는 다른 한정자에 대한 리소스 후보가 기본값이거나 항상 사용자의 컨텍스트와 일치하는 경우 이 경고가 표시됩니다. 런타임 시 사용자의 언어 기본 설정 또는 홈 위치와 같은 특정 사용자 구성에 대해(설정>시간& 언어>지역& 언어), 리소스를 검색하기 위해 사용되는 API는 예기치 않은 예외가 발생할 수 있습니다. 이 경고를 제거하려면 프로젝트의 기본 언어 또는 전 세계 소속 지역(homeregion-001)의 리소스와 같은 기본 리소스가 제공되어야 합니다.

빌드 시스템에서 MakePri.exe 사용

빌드 시스템은 빌드되는 프로젝트 유형에 따라 MakePri.exe new, versioned, 또는 resourcepack 명령을 사용해야 합니다. 새 PRI 파일을 만드는 빌드 시스템은 new 명령을 사용해야 합니다. 반복을 통해 내부 오프셋의 호환성을 사용할 수 있도록 해야 하는 시스템 빌드는 versioned 명령을 사용할 수 있습니다. 추가 리소스 변형을 포함하고 새 리소스가 해당 변형에 추가되지 않은지 유효성 검사를 해야 하는 PRI 파일을 만들어야 하는 빌드 시스템은 resourcepack 명령을 사용해야 합니다.

인덱스되는 원본 파일에 대해 명시적인 제어가 필요한 빌드 시스템은 폴더를 인덱싱하는 대신에 ResFiles 인덱서를 사용할 수 있습니다. 빌드 시스템은 다른 형식별 인덱서로 여러 인덱스 전달을 사용하여 단일 PRI 파일을 생성할 수도 있습니다.

또한 빌드 시스템은 PRI 형식별 인덱서를 사용하여 클래스 라이브러리, 어셈블리, SDK 및 DLL과 같은 다른 구성 요소에서 미리 작성된 PRI 파일을 패키지에 대한 PRI에 추가할 수도 있습니다.

다른 구성 요소, 클래스 라이브러리, 어셈블리, DLL 및 SDK에 대해 PRI 파일을 작성할 때 구성 요소 리소스가 포함된 앱과 충돌하지 않는 자체 하위 리소스 맵을 가지도록 initialPath 구성을 사용해야 합니다.