使用 MakePri.exe 手动编译资源

MakePri.exe 是可用于创建和转储 PRI 文件的命令行工具。 它作为 MSBuild 的一部分集成到 Microsoft Visual Studio 中,但它可用于手动或使用自定义生成系统来创建包。

注意

在安装 Windows 软件开发工具包时,如果勾选“适用于 UWP 托管应用的 Windows SDK”选项,将安装 MakePri.exe。 将安装到路径 %WindowsSdkDir%bin\<WindowsTargetPlatformVersion>\x64\makepri.exe(以及以其他体系结构命名的文件夹中)。 例如 C:\Program Files (x86)\Windows Kits\10\bin\10.0.17713.0\x64\makepri.exe

本节内容

主题 说明
MakePri.exe 命令行选项 MakePri.exe 具有命令集 createconfigdumpnewresourcepackversioned。 本主题对命令行选项的使用进行详细介绍。
MakePri.exe 配置文件 本主题介绍 MakePri.exe XML 配置文件的架构。
MakePri.exe 格式特定索引器 本主题介绍 MakePri.exe 工具生成资源索引时使用的特定于格式的索引器。

MakePri.exe 命令行选项

MakePri.exe 具有命令集 createconfigdumpnewresourcepackversioned。 有关其使用的详细信息,请参阅 MakePri.exe 命令行选项

MakePri.exe 配置

PRI XML 配置文件规定了如何以及对哪些资源进行索引。 MakePri.exe 配置中描述了配置 XML 的架构。

特定于格式的索引器

MakePri.exe 通常与 newversionedresourcepack 选项一起使用。 在这些情况下,它会为源文件编制索引以生成资源索引。 MakePri.exe 使用各种单独的索引器来读取资源的不同源资源文件或容器。 最简单的索引器是文件夹索引器,它为资源文件夹的内容编制索引,例如 .jpg.png 图像。 有关更多信息,请参阅MakePri.exe 格式特定的索引器

MakePri.exe 警告和错误消息

找到了语言“<语言>”的资源,但找不到默认语言“<语言>”的资源。 更改默认语言或使用默认语言来限定资源。

当 MakePri.exe 或 MSBuild 发现似乎使用语言限定符进行标记的指定名称资源的文件或字符串资源,但没有找到默认语言的候选项时,会显示此警告。 针对语言、缩放和其他限定符定制资源中描述了在文件和文件夹名称中使用限定符的过程。 文件或文件夹中可能包含语言名称,但未发现有资源限定为确切的默认语言。 例如,如果项目使用“en-US”作为默认语言,并且具有名为“de/logo.png”的文件,但没有使用默认语言“en-US”标记的任何文件,则会显示此警告。 要移除此警告,文件或字符串资源应使用默认语言进行限定,或者应更改默认语言。 要更改默认语言,请在 Visual Studio 中打开解决方案,然后打开 Package.appxmanifest。 在应用程序选项卡上,确认已正确设置默认语言(例如“en”或“en-US”)。

没有为“<资源标识符>”提供默认或中立资源。 在检索资源时,应用程序可能会因为某些用户配置而引发异常。

当 MakePri.exe 或 MSBuild 发现似乎使用语言限定符进行标记的文件或资源具有不清晰的资源时,会显示此警告。 有限定符,但不能保证可以在运行时为该资源标识符返回特定的资源候选项。 如果找不到特定语言、主区域或其他限定符的资源候选项(默认或始终与用户的上下文匹配),则会显示此警告。 在运行时,对于特定的用户配置,例如用户的语言首选项或主位置(“设置”>“时间和语言”>“区域和语言”),用于检索资源的 API 可能会引发意外的异常。 为了移除此警告,应提供默认资源,例如项目的默认语言或全局主区域(homeregion-001)中的资源。

在构建系统中使用 MakePri.exe

构建系统应使用 MakePri.exe newversionedresourcepack 命令,具体取决于构建的项目类型。 创建新 PRI 文件的构建系统应使用 new 命令。 必须通过迭代确保内部偏移兼容性的构建系统可以使用 versioned 命令。 必须创建包含其他资源变体的 PRI 文件,并通过验证来确保没有为该变体添加新资源,这样的构建系统应使用 resourcepack 命令。

需要对索引的源文件进行显式控制的构建系统可以使用 ResFiles 索引器,而不是对文件夹进行索引。 构建系统还可以使用具有不同 格式特定索引器的 多个索引传递来生成单个 PRI 文件。

构建系统还可以使用 PRI 格式特定的索引器将预构建的 PRI 文件添加到其他组件(如类库、程序集、SDK 和 DLL)包的 PRI 中。

为其他组件、类库、程序集、DLL 和 SDK 构建 PRI 文件时,应使用 initialPath 配置来确保组件资源具有其自己的子资源映射,这些映射不会与包含其的应用冲突。