【问题标题】:UWP Build Issue with Resource size (.PRI file issue)资源大小的 UWP 构建问题(.PRI 文件问题)
【发布时间】:2020-04-20 11:28:23
【问题描述】:

在我的 UWP 项目中,大量使用了超过 20 种语言的字符串资源,每种语言都有 50k+ 个键值。它还有很多屏幕和控件。

直到某个限制,没有遇到任何构建问题。但是一旦我添加了 3k 更多的键,MSBuild 就会出现未指定的构建错误。奇怪的是,如果我减少一些密钥构建再次有效。

构建命令

MSBuild.exe MyProject.sln /p:AppxBundlePlatforms="x64" /p:AppxPackageDir="$(Build.ArtifactStagingDirectory)\MyProject\AppxPackages\\" /p:AppxBundle=Always /p:UapAppxPackageBuildMode=SideloadOnly /p:UseDotNetNativeToolchain=false /p:Use64BitCompiler=true

错误

error PRI175 : 0x80004004 - Processing Resources failed with error : Operation aborted [D:\VSTS Agent\vsts-agent-win-x86-2.155.1\_work\24\s\MyProject.csproj]
  GENERATEPROJECTPRIFILE : error PRI222: 0xdef0000f - Unspecified error occurred. [D:\VSTS Agent\vsts-agent-win-x86-2.155.1\_work\24\s\MyProject.csproj]
    1654 Warning(s)
    2 Error(s)

一段时间后发现了 PRI 文件的问题。根据MS Documentation PRI 文件大小石灰是64kb。但直到 18mb(是的!我的 resources.pri 文件大小为 18.6mb 并且仍在构建和工作)之前它对我来说都很好。

如前所述,如果我添加更多密钥,resources.pri 文件将变为 21mb 并且总是失败(使用禁用的 .Net Native Toolchain 发布构建)

幸运的是,它使用 .Net Native Toolchain 启用成功构建。

有解决此问题的建议吗?

提前致谢!

【问题讨论】:

  • 您好,您说启用.Net Native Toolchain就可以构建成功。你必须禁用它吗?这是什么原因?
  • 由于其他依赖项,期望以两种方式(使用和不使用 .Net 本机工具链)进行构建。但在生产中,我们只使用 .Net 本机启用的构建。我厌倦了用 makepri.exe 转储 pri 文件。在那里,我可以在生成的 XML 文件中看到大约 100 万行代码。它具有所有图像映射和语言值。如果我们将来添加更多字符串,不确定 .Net 原生构建是否会损坏。
  • 您好,您可以继续使用.Net Native Toolchain 来构建您的应用,这件事我会问相关工程师,如果有消息,我会在这里发布。

标签: c# uwp azure-devops msbuild


【解决方案1】:

根据 MS 文档 PRI 文件大小,石灰为 64kb。

非常感谢您报告此问题,我已确认文档中的 64KB 限制不正确,将对其进行更新。

如前所述,如果我在 resources.pri 文件中添加更多键 变成 21mb 并且总是失败(Release build with disabled .Net 原生工具链)

幸运的是,它在启用 .Net Native Toolchain 的情况下成功构建。

对于大约 21mb 的大小,您似乎可能达到了 PRI 文件中允许的项目数量的上限。

如果我们将来添加更多字符串,也不确定 .Net 原生构建

由于我们会定期审核并为 PRI 文件提供额外容量,因此如果您仍想将 PRI 文件增加到大于 21mb 的文件,请尝试使用最新的内部预览版本 (20H1)看看它是否有助于缓解您所看到的情况?

谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多