指定应用使用的默认资源

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

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

即使对于不进入自己资源包的资源(如为高对比度设置定制的图像),如果无法找到与用户设置匹配的资源,则可以指定应用在运行时应该使用的默认资源。 例如,contrast 的默认值是 standard,但可根据自己的意愿使用其他值替代该默认值。

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

可以采用两种方式中的其中一种来配置这些默认值。 可以将配置文件添加到项目,也可以直接编辑项目文件。 使用这些选项中最熟悉或最适用于生成系统的选项。

选项 1. 使用 priconfig.default.xml 指定限定符的默认值

  1. 在 Visual Studio 中,将新项添加到项目。 选择 XML 文件,并将该文件命名为 priconfig.default.xml

  2. 在“解决方案资源管理器”中,选择 priconfig.default.xml 并检查“属性”窗口。 文件的“生成操作”应设置为 None,“复制到输出目录”应设置为“不要复制”。

  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 的行为。 换言之,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 并确认其内容是否与替代的内容相匹配。 如果匹配,则已成功地配置应用将默认使用的资源的限定符值。 如果未找到用户设置的匹配项,则将使用其文件夹或文件名包含在此处设置的默认限定符值的资源。

WSL 的工作原理是怎样的?

在后台,Visual Studio 启动一个名为 MakePri.exe 的工具来生成一个称为包资源索引 (PRI) 的文件,用于描述所有应用的资源,包括指示哪些是默认资源。 有关此工具的详细信息,请参阅使用 MakePri.exe 手动编译资源。 Visual Studio 将配置文件传递给 MakePri.exepriconfig.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 更适合开发和/或构建工作流,则可以选择执行选项 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)。