【发布时间】: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