指定应用使用的默认资源

如果应用没有与客户设备的特定设置匹配的资源,则使用应用的默认资源。 本主题介绍如何指定这些默认资源是什么。

当客户从 Microsoft 应用商店安装应用时,客户的设备上设置将与应用的可用资源匹配。 为此,只需为该用户下载并安装适当的资源即可完成此匹配。 例如,会使用与用户语言首选项相符以及适合设备分辨率和DPI设置的字符串和图像。 例如, 200 是默认值 scale,但可以根据需要替代该默认值。

即使是那些不在其自身资源包中(例如为高对比度设置定制的图像)的资源,您也可以指定如果找不到与用户设置匹配的资源,应用程序在运行时应使用的默认资源。 例如, standard 是默认值 contrast,但可以根据需要替代该默认值。

这些默认值以默认资源限定符值的形式指定。 有关资源限定符是什么、它们的用途和目的的说明,请参阅 针对语言、缩放、高对比度和其他限定符定制资源

可以通过以下两种方式之一配置这些默认值。 可以将配置文件添加到项目,也可以直接编辑项目文件。 使用你觉得最舒服的选项,或者选择最适合你构建系统的选项。

选项 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 语言标记,则应用的默认语言需要相同标记。 如果是以逗号分隔的语言标记列表,则应用的默认语言必须是列表中的第一个标记。 在应用包清单源文件()的“应用程序”选项卡上的“默认语言 ”字段中设置应用的默认语言。

  4. 每个 <qualifier> 元素指示 Visual Studio 为每个限定符名称选择要用作默认值的具体数值。 根据您目前的文件内容,实际上您尚未更改 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 知道。 在项目文件中,在第一个 <PropertyGroup> 元素的开始标记和结束标记之间,添加此 XML。

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

FILE-PATH-AND-NAME 替换为文件的路径和名称。

选项 2. 使用项目文件指定默认限定符值

这是选项 1 的替代方法。 了解选项 1 的工作原理后,可以选择改为执行选项 2(如果这更适合开发和/或生成工作流)。

在项目文件中,在第一个 <PropertyGroup> 元素的开始标记和结束标记之间,添加此 XML。

<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将更改与应用的默认语言同步。