Windows 8.1 应用商店应用:确保在设备上安装资源,而不管设备是否需要资源

 

适用于 Windows 和 Windows Phone

通过将各种资源包括在应用包中,你可以确保在每个设备上随应用一并安装所有这些资源,而不局限于在安装应用时需要的资源。例如,可以确保随应用一并安装多语言用户界面字符串,而非仅安装与设备的用户语言首选项相匹配的语言。如果使用此策略,用户无需连接 Internet 即可更改语言首选项或其他设置,并且他们的设备可切换到最适于新设置的资源。

将资源包含在应用包中会增加应用的大小。如果您希望减小应用程序的大小,请将资源包含在用户稍后可下载的资源包中。对于大多数应用程序,资源包可以在占用最少内存的情况下让用户获得最佳体验,但资源包可能不适用于某些应用程序,例如,多语言字典、翻译工具或其他语言将即时更改的应用程序。这些应用可将各种资源包含在应用包中。

可以通过添加配置文件将资源包括到应用包中。或者,如果你喜欢直接编辑项目文件,也可通过添加配置文件来完成此任务。

选项 1:将配置文件添加到解决方案

  1. 在“解决方案资源管理器”中,右键单击用于应用的项目,指向“添加”,然后单击“新建项”。

  2. 在“添加新项”对话框中,单击“XML 文件”模板,将文件命名为 priconfig.packaging.xml,然后单击“添加”。

  3. 用下列 XML 替换此文件的内容。

    <packaging>
        <autoResourcePackage qualifier="Language" />
        <autoResourcePackage qualifier="Scale" />
        <autoResourcePackage qualifier="DXFeatureLevel" />
    </packaging>
    
  4. 删除表示你不想包含在资源包中的资源类别的 XML 行。以下示例显示了在删除 Language 限定符后 priconfig.packaging.xml 文件的内容。

    <packaging>
        <autoResourcePackage qualifier="Scale" />
        <autoResourcePackage qualifier="DXFeatureLevel" />
    </packaging>
    

    在此示例中,所有语言资源均包含在应用捆绑包的应用包中,并且无论设备的用户语言首选项如何,用户都将下载这些语言资源。

  5. 保存并关闭 priconfig.packaging.xml 文件。

  6. 如果删除 Language限定符,则将另一个 XML 文件添加到名为 priconfig.default.xml 的项目,并将此文件的内容替换为以下 XML。

    <default>
      <qualifier name="Language" value=Value />
    </default>
    

    备注

    如果删除 Scale 或 DXFeatureLevel 限定符,而删除 Language 限定符,则不必向项目添加 priconfig.default.xml 文件。

    Value 占位符替换为要包含在应用包中的每种语言资源的语言代码。以下示例说明在使用语言代码列表替换语言限定符的 Value 占位符后 XML 的可能显示方式。

    <default>
      <qualifier name="Language" value=”en;ja;de” />
      </default>
    
  7. 在“解决方案资源管理器”中,单击“priconfig.packaging.xml”文件。

  8. 在“属性”窗口中,根据项目语言更改以下属性的值。

    • 对于 C# 和 VB 项目,将“生成操作”属性设置为“无”。

    • 对于 JavaScript 项目,将“包操作”属性设置为“无”。

    • 对于 C++ 项目,将“内容”属性设置为“False”。

  9. 如果已将 priconfig.default.xml 文件添加到项目中,则将此文件的“生成操作”属性设置为“无”、将“包操作”属性设置为“无”或将“内容”属性设置为“False”,具体取决于项目的语言。

  10. 在上“构建”菜单上,单击“生成解决方案”,然后创建应用包。

    在“创建应用包”向导的“选择和配置包”页中,选择为你的包生成应用捆绑包。请参见创建 Windows 8.1 应用包

  11. ProjectFolder**\obj\**ReleaseConfiguration 文件夹中,在记事本中打开 split.priconfig.xml 文件。

  12. 验证资源限定符列表中未显示已删除的限定符。

重命名 priconfig.packaging.xml 文件

可以将配置文件命名为任意名称。但是,如果将它为 priconfig.packaging xml 以外的任何名称,则必须将生成属性添加到项目文件。

  1. 在“解决方案资源管理器”中,右键单击应用的项目,然后单击“卸载项目”。

  2. 再次右键点击此项目,然后单击“编辑 AppName**.csproj”或“编辑 AppName.vbproj”**。

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

    <AppxPriConfigXmlPackagingSnippetPath>FilePath</AppxPriConfigXmlPackagingSnippetPath>
    

    重要

    FilePath 替换为配置文件的路径,并将文件名称包含在内。

  4. 保存并关闭项目文件。

  5. 在“解决方案资源管理器”中,右键单击项目,然后单击“重新加载项目”。

  6. 生成解决方案,然后创建包。

备注

如果已将 priconfig.default.xml 文件添加到项目,则也可以重命名此文件。有关如何重命名此文件的信息,请参见重命名 priconfig.default.xml 文件

选项 2:修改项目文件(高级)

  1. 在记事本中打开应用的项目文件。

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

    <AppxBundleAutoResourcePackageQualifiers>Language|Scale|DXFeatureLevel</AppxBundleAutoResourcePackageQualifiers>
    
  3. 在此 XML 行中,删除不想包含在资源包中的资源类别。以下示例显示了在删除了 Language 限定符后的 XML 行。

    <AppxBundleAutoResourcePackageQualifiers>Scale|DXFeatureLevel</AppxBundleAutoResourcePackageQualifiers>
    

    在此示例中,所有语言资源均将包含在应用捆绑包的应用包中,且无论设备的用户语言首选项如何,用户都将下载这些语言资源。

  4. 如果删除 Language 限定符,请在第一个 <PropertyGroup> 元素的开始标记和结束标记之间添加以下 XML 行。

    <AppxDefaultResourceQualifiers>Language=Value</AppxDefaultResourceQualifiers>
    

    备注

    如果删除 Scale 或 DXFeatureLevel 限定符,而删除 Language 限定符,则不必添加此行。

    Value 占位符替换为要包含在应用包中的每种语言资源的语言代码。以下示例说明在使用语言代码列表替换语言限定符的 Value 占位符后 XML 的可能显示方式。

    <AppxDefaultResourceQualifiers>Language=en;ja;de</AppxDefaultResourceQualifiers>
    
  5. 保存并关闭项目文件。然后,在 Visual Studio 中重新加载文件。

  6. 生成解决方案,然后创建应用包。

    在“创建应用包”向导的“选择并配置包”页,选择为你的包生成应用捆绑包。请参见创建 Windows 8.1 应用包

  7. ProjectFolder**\obj\**ReleaseConfiguration 文件夹中,在记事本中打开 split.priconfig.xml 文件。

  8. 验证资源限定符列表中未显示已删除的限定符。

请参阅

应用捆绑包部署
应用捆绑包
确定是否生成应用捆绑
资源包
资源管理系统
定义应用资源(使用 C#/VB/C++ 和 XAML 的应用)
定义应用资源(使用 JavaScript 和 HTML 的应用)