다음을 통해 공유


앱에서 사용하는 기본 리소스 지정

앱에 고객 디바이스의 특정 설정과 일치하는 리소스가 없으면 앱의 기본 리소스가 사용됩니다. 이 문서에서는 이러한 기본 리소스를 지정하는 방법에 대해 설명합니다.

고객이 Microsoft Store에서 앱을 설치하면 고객 디바이스의 설정이 앱의 사용 가능한 리소스와 일치합니다. 이 일치는 해당 사용자에 대해 적절한 리소스만 다운로드하고 설치하기 위해 수행됩니다. 예를 들어 사용자의 언어 기본 설정, 디바이스의 해상도 및 DPI 설정에 가장 적절한 문자열과 이미지가 사용됩니다. 예를 들어 200scale의 기본값이지만, 원하는 경우 해당 기본값을 재정의할 수 있습니다.

자체 리소스 팩에 포함되지 않는 리소스(예: 고대비 설정에 맞게 조정된 이미지)의 경우에도 사용자의 설정과 일치하는 리소스를 찾을 수 없으면 런타임에 앱에서 사용해야 하는 기본 리소스를 지정할 수 있습니다. 예를 들어 standardcontrast의 기본값이지만, 원하는 경우 해당 기본값을 재정의할 수 있습니다.

이러한 기본값은 기본 리소스 한정자 값 형식으로 지정됩니다. 리소스 한정자의 정의, 용도 및 목적에 대한 설명은 언어, 배율, 고대비 및 기타 한정자에 맞게 리소스 조정을 참조하세요.

이러한 기본값은 두 가지 방법 중 하나로 구성할 수 있습니다. 구성 파일을 프로젝트에 추가하거나 프로젝트 파일을 직접 편집할 수 있습니다. 이러한 옵션 중 가장 편한 것을 사용하거나 빌드 시스템에 가장 적합한 것을 사용합니다.

옵션 1. priconfig.default.xml을 사용하여 기본 한정자 값 지정

  1. Visual Studio에서 새 항목을 프로젝트에 추가합니다. XML 파일을 선택하고, 파일 이름을 priconfig.default.xml로 지정합니다.

  2. 솔루션 탐색기에서 priconfig.default.xml을 선택하고, 속성 창을 확인합니다. 파일의 빌드 작업은 없음으로 설정하고, 출력 디렉터리에 복사는 복사 안 함으로 설정해야 합니다.

  3. 파일의 내용을 이 XML로 바꿉니다.

    <default>
       <qualifier name="Language" value="LANGUAGE-TAG(S)" />
       <qualifier name="Contrast" value="standard" />
       <qualifier name="Scale" value="200" />
       <qualifier name="HomeRegion" value="001" />
       <qualifier name="TargetSize" value="256" />
       <qualifier name="LayoutDirection" value="LTR" />
       <qualifier name="DXFeatureLevel" value="DX9" />
       <qualifier name="Configuration" value="" />
       <qualifier name="AlternateForm" value="" />
    </default>
    

    참고 LANGUAGE-TAG(S) 값은 앱의 기본 언어와 동기화해야 합니다. 단일 BCP-47 언어 태그인 경우 앱의 기본 언어는 동일한 태그여야 합니다. 쉼표로 구분된 언어 태그 목록인 경우 앱의 기본 언어는 목록의 첫 번째 태그여야 합니다. 앱 패키지 매니페스트 소스 파일(Package.appxmanifest)의 애플리케이션 탭에 있는 기본 언어 필드에서 앱의 기본 언어를 설정합니다.

  4. <qualifier> 요소는 Visual Studio에 각 한정자 이름의 기본값으로 사용할 값을 알려줍니다. 지금까지의 파일 내용을 사용하면 Visual Studio의 동작이 실제로 변경되지 않습니다. 즉, 이러한 내용이 기본값이므로 이 파일이 해당 내용과 함께 있는 것처럼 이미 작동했습니다. 따라서 기본값을 사용자 고유의 기본값으로 재정의하려면 파일의 값을 변경해야 합니다. 처음 세 개의 값을 편집한 경우 파일이 표시되는 모양을 보여 주는 예제는 다음과 같습니다.

    <default>
       <qualifier name="Language" value="de-DE" />
       <qualifier name="Contrast" value="black" />
       <qualifier name="Scale" value="400" />
       <qualifier name="HomeRegion" value="001" />
       <qualifier name="TargetSize" value="256" />
       <qualifier name="LayoutDirection" value="LTR" />
       <qualifier name="DXFeatureLevel" value="DX9" />
       <qualifier name="Configuration" value="" />
       <qualifier name="AlternateForm" value="" />
    </default>
    
  5. 파일을 저장하고 닫은 다음, 프로젝트를 다시 빌드합니다.

재정의된 기본값이 고려되고 있는지 확인하려면 <ProjectFolder>\obj\<ReleaseConfiguration folder>\priconfig.xml 파일을 찾아 해당 내용이 재정의와 일치하는지 확인합니다. 이렇게 하면 앱에서 기본적으로 사용할 리소스의 한정자 값을 성공적으로 구성한 것입니다. 사용자의 설정과 일치하는 값이 없으면 여기서 설정한 기본 한정자 값이 폴더 또는 파일 이름에 포함된 리소스가 사용됩니다.

어떻게 작동하나요?

백그라운드에서 Visual Studio는 MakePri.exe라는 도구를 실행하여 PRI(패키지 리소스 인덱스)라는 파일을 생성합니다. 이 파일은 기본 리소스임을 나타내는 등 앱의 리소스에 대한 모든 항목을 설명합니다. 이 도구에 대한 자세한 내용은 MakePri.exe를 사용하여 수동으로 리소스 컴파일을 참조하세요. Visual Studio가 구성 파일을 MakePri.exe에 전달합니다. priconfig.default.xml 파일의 내용은 해당 구성 파일의 <default> 요소로 사용됩니다. 이 요소는 기본값으로 간주되는 한정자 값 세트를 지정하는 부분입니다. 따라서 priconfig.default.xml을 추가하고 편집하면 궁극적으로 Visual Studio에서 앱에 대해 생성하고 해당 앱 패키지에 포함하는 패키지 리소스 인덱스 파일의 내용에 영향을 줍니다.

참고 <qualifier name="Language" ... /> 요소의 값을 변경할 때마다 해당 변경 내용을 앱의 기본 언어와 동기화해야 합니다. 이는 앱의 PRI 파일에 인덱싱된 언어 리소스가 앱의 매니페스트 기본 언어와 일치하도록 하기 위한 것입니다. <qualifier name="Language" ... /> 요소의 값은 <ProjectFolder>\obj\<ReleaseConfiguration folder>\priconfig.xml의 내용과 관련하여 매니페스트의 값을 재정의하지만, 해당 파일과 앱의 매니페스트는 일치해야 합니다.

priconfig.default.xml이 아닌 다른 파일 이름 사용

파일 이름을 priconfig.default.xml로 지정하면 Visual Studio에서 이를 인식하고 자동으로 사용합니다. 다른 이름을 지정하면 Visual Studio에 알려야 합니다. 프로젝트 파일에서 이 XML을 첫 번째 <PropertyGroup> 요소의 여는 태그와 닫는 태그 사이에 추가합니다.

<AppxPriConfigXmlDefaultSnippetPath>FILE-PATH-AND-NAME</AppxPriConfigXmlDefaultSnippetPath>

FILE-PATH-AND-NAME을 파일의 경로와 이름으로 바꿉니다.

옵션 2. 프로젝트 파일을 사용하여 기본 한정자 값 지정

이 옵션은 옵션 1의 대안입니다. 옵션 1의 작동 방식을 이해했고 개발 및/또는 빌드 워크플로에 더 적합한 경우 옵션 2를 대신 수행하도록 선택할 수 있습니다.

프로젝트 파일에서 이 XML을 첫 번째 <PropertyGroup> 요소의 여는 태그와 닫는 태그 사이에 추가합니다.

<AppxDefaultResourceQualifiers>Language=LANGUAGE-TAG(S)|Contrast=standard|Scale=200|HomeRegion=001|TargetSize=256|LayoutDirection=LTR|DXFeatureLevel=DX9|Configuration=|AlternateForm=</AppxDefaultResourceQualifiers>

처음 세 개의 값을 편집한 후의 모양을 보여 주는 예제는 다음과 같습니다.

<AppxDefaultResourceQualifiers>Language=de-DE|Contrast=black|Scale=400|HomeRegion=001|TargetSize=256|LayoutDirection=LTR|DXFeatureLevel=DX9|Configuration=|AlternateForm=</AppxDefaultResourceQualifiers>

저장하고 닫은 다음, 프로젝트를 다시 빌드합니다.

참고 Language= 값을 변경할 때마다 매니페스트 디자이너에서 Package.appxmanifest를 열어 해당 변경 내용을 앱의 기본 언어와 동기화해야 합니다.