アプリで使用する既定のリソースを指定するSpecify the default resources that your app uses

アプリにユーザーのデバイスの特定の設定に一致するリソースがない場合、アプリの既定のリソースが使用されます。If your app doesn't have resources that match the particular settings of a customer device, then the app's default resources are used. このトピックでは、これらの既定のリソースの内容を指定する方法について説明します。This topic explains how to specify what those default resources are.

ユーザーが Microsoft Store からアプリをインストールするときに、ユーザーのデバイスの設定は、アプリの利用可能なリソースと照合されます。When a customer installs your app from the Microsoft Store, settings on the customer's device are matched against the app's available resources. この照合は、適切なリソースのみがそのユーザーに対してダウンロードおよびインストールされる必要があるようにするために行われます。This matching is done so that only the appropriate resources need to be downloaded and installed for that user. たとえば、ユーザーの言語の優先順位の最も適切な文字列とイメージ、およびデバイスの解像度と DPI 設定が使用されます。For example, the most appropriate strings and images for the user's language preferences, and the device's resolution and DPI settings, are used. たとえば、200scale の既定値ですが、必要な場合はその既定値を上書きできます。For example, 200 is the default value for scale, but you can override that default if you wish.

自分のリソース パックに移動しないリソース (ハイ コントラスト設定に合わせたイメージなど) でも、ユーザーの設定に一致するリソースが見つからない場合に実行時にアプリで使用する必要がある既定のリソースを指定できます。Even for resources that don't go into their own resource packs (such as images tailored for high contrast settings), you can specify what default resources the app should use at run time if a resource that matches the user's settings can't be found. たとえば、standardcontrast の既定値ですが、必要な場合はその既定値を上書きできます。For example, standard is the default value for contrast, but you can override that default if you wish.

これらの既定値は、既定のリソース修飾子の値の形式で指定します。These defaults are specified in the form of default resource qualifier values. リソース修飾子の内容については、「言語、スケール、ハイ コントラスト、その他の修飾子用にリソースを調整する」を参照してください。For an explanation of what resource qualifiers are, their use, and purpose, see Tailor your resources for language, scale, high contrast, and other qualifiers.

これらの既定値の内容は、2 つの方法のいずれかで構成できます。You can configure what these defaults are in one of two ways. 構成ファイルをプロジェクトに追加するか、またはプロジェクト ファイルを直接編集することができます。You can either add a configuration file to your project, or you can edit your project file directly. これらのうち使いやすいオプション、またはビルド システムで最適に機能するオプションを使用してください。Use whichever of these options you're most comfortable with, or whichever works best with your build system.

オプション 1.Option 1. priconfig.default.xml を使用して、既定の修飾子の値を指定するUse priconfig.default.xml to specify default qualifier values

  1. Visual Studio で、新しい項目をプロジェクトに追加します。In Visual Studio, add a new item to your project. XML ファイルを選択し、ファイルに priconfig.default.xml という名前を付けます。Choose XML File, and name the file priconfig.default.xml.

  2. ソリューション エクスプ ローラーで、priconfig.default.xml を選択し、[プロパティ] ウィンドウを確認します。In Solution Explorer, select priconfig.default.xml and check the Properties window. ファイルの [ビルド アクション] を [なし] に設定し、[出力ディレクトリにコピー] を [コピーしない] に設定します。The file's Build Action should be set to None, and Copy to Output Directory should be set to Do not copy.

  3. ファイルの内容をこの XML に置き換えます。Replace the contents of the file with this 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) は、アプリの既定の言語と同期する必要があります。Note The value LANGUAGE-TAG(S) needs to be synchronized with your app's default language. それが単一の BCP-47 言語タグ である場合は、アプリの既定の言語は同じタグである必要があります。If that's a single BCP-47 language tag, then your app's default language needs to be the same tag. それが言語タグのコンマ区切りのリストである場合、アプリの既定の言語はリストの最初のタグである必要があります。If it's a comma-separated list of language tags, then your app's default language needs to be the first tag in the list. アプリ パッケージ マニフェスト ソース ファイル (Package.appxmanifest) の [アプリケーション] タブの [既定の言語] フィールドでアプリの既定の言語を設定します。You set your app's default language in the Default language field on the Application tab in your app package manifest source file (Package.appxmanifest).

  4. <qualifier> 要素は Visual Studio に対して、各修飾子名の既定値として使用する値を指示します。Each <qualifier> element tells Visual Studio what value to use as the default for each qualifier name. ファイルの内容はこれまでのものであり、Visual Studio の動作を実際には変更していません。With the file contents you have so far, you haven't actually changed Visual Studio's behavior. つまり、これらの内容が既定値であるため、Visual Studio はこれらの内容を持つファイルが存在しているかのように既に動作しましたIn other words, Visual Studio already behaved as if this file were present with these contents, because these are the default defaults. そのため、既定値を独自の既定値で上書きするには、ファイル内の値を変更する必要があります。So to override a default with your own default value, you'll have to change a value in the file. 最初の 3 つの値を編集した場合、ファイルの外観は次のようになります。Here's an example of how the file might look if you'd edited the first three values.

    <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. ファイルを保存して閉じ、プロジェクトをリビルドします。Save and close the file and rebuild your project.

上書きされた既定値が適用されていることを確認するには、<ProjectFolder>\obj\<ReleaseConfiguration folder>\priconfig.xml ファイルを探し、その内容が上書き値に一致することを確認します。To confirm that your overridden defaults are being taken into account, look for the file <ProjectFolder>\obj\<ReleaseConfiguration folder>\priconfig.xml and confirm that its contents match your overrides. 一致する場合は、アプリが既定で使用するリソースの修飾子の値を正常に構成したことになります。If they do, then you have successfully configured the qualifier values of the resources that your app will use by default. ユーザーの設定の一致対象が見つからない場合は、フォルダー名またはファイル名にここで設定した既定の修飾子の値が含まれているリソースが使用されます。If a match for the user's settings is not found, then resources will be used whose folder or file names contain the default qualifer values that you've set here.

この処理のしくみHow does this work?

バックグラウンドで、Visual Studio は MakePri.exe というツールを起動し、パッケージ リソース インデックス (PRI) と呼ばれるファイルを生成します。このファイルには、既定のリソースを示すなど、アプリのすべてのリソースについての情報を記述しています。Behind the scenes, Visual Studio launches a tool named MakePri.exe to generate a file known as a Package Resource Index (PRI), which describes all of your app's resources, including indicating which are the default resources. このツールの詳細については、「MakePri.exe を使用して手動でリソースをコンパイルする」を参照してください。For details about this tool, see Compile resources manually with MakePri.exe. Visual Studio は、構成ファイルを MakePri.exe に渡します。Visual Studio passes a configuration file to MakePri.exe. priconfig.default.xml ファイルの内容が、その構成ファイルの <default> 要素として使用されます。この要素は、既定値と見なされる修飾子の値のセットを指定する部分です。The contents of your priconfig.default.xml file are used as the <default> element of that configuration file, which is the part that specifies the set of qualifier values that are considered to be default. そのため、最終的には priconfig.default.xml を追加および編集すると、Visual Studio がアプリに対して生成し、そのアプリ パッケージに含めるパッケージ リソース インデックス ファイルの内容に影響します。So, adding and editing priconfig.default.xml ultimately influences the contents of the Package Resource Index file that Visual Studio generates for your app and includes in its app package.

メモ<qualifier name="Language" ... /> 要素の値を変更するときは、その変更をアプリの既定の言語で同期する必要があります。Note Any time you change the value of the <qualifier name="Language" ... /> element, you need to synchronize that change with your app's default language. これは、アプリの PRI ファイルでインデックスが作成された言語リソースがアプリのマニフェストの既定の言語に一致するようにするためです。This is so that the language resources indexed in your app's PRI file match your app's manifest default language. <qualifier name="Language" ... /> 要素の値は、<ProjectFolder>\obj\<ReleaseConfiguration folder>\priconfig.xml の内容に関してマニフェストの値を上書きしますが、そのファイルとアプリのマニフェストは一致する必要があります。The value in the <qualifier name="Language" ... /> element overrides the value in the manifest with respect to the contents of <ProjectFolder>\obj\<ReleaseConfiguration folder>\priconfig.xml, but that file and your app's manifest should match.

priconfig.default.xml とは異なるファイル名の使用Using a different file name than priconfig.default.xml

ファイルに priconfig.default.xml という名前を付けると、Visual Studio はそれを自動的に認識して使用します。If you name your file priconfig.default.xml, then Visual Studio will recognize it and use it automatically. 異なる名前を付けた場合、Visual Studio がそれを認識できるようにする必要があります。If you give it a different name, then you'll need to let Visual Studio know. プロジェクト ファイルで、<PropertyGroup> 要素の開始タグと終了タグの間にこの XML を追加します。In your project file, between the opening and closing tags of the first <PropertyGroup> element, add this XML.

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

FILE-PATH-AND-NAME をファイルのパスおよび名前に置き換えます。Replace FILE-PATH-AND-NAME with the path to, and name of, your file.

オプション 2.Option 2. プロジェクト ファイルを使用して、既定の修飾子の値を指定するUse your project file to specify default qualifier values

これは、オプション 1 に代わる方法です。This is an alternative to Option 1. オプション 1 のしくみを理解したら、オプション 2 の方が開発またはビルドのワークフローに最適である場合、オプション 2 を代わりに選択することができます。Once you understand how Option 1 works, you can choose to do Option 2 instead, if that suits your development and/or build workflow better.

プロジェクト ファイルで、<PropertyGroup> 要素の開始タグと終了タグの間にこの XML を追加します。In your project file, between the opening and closing tags of the first <PropertyGroup> element, add this XML.

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

最初の 3 つの値を編集したら、次のようになります。Here's an example of how that might look after you've edited the first three values.

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

ファイルを保存して閉じ、プロジェクトをリビルドします。Save and close, and rebuild your project.

メモLanguage= 値を変更するときは、マニフェスト デザイナーで (Package.appxmanifest を開いて) その変更をアプリの既定の言語に同期する必要があります)。Note Any time you change the Language= value, you need to synchronize that change with your app's default language in the manifest designer (by opening Package.appxmanifest).