我正在Visual Studio 2017中构建一个UWP应用程序(它实际上是一个Unity游戏,解决方案是从Unity导出的)。在构建期间,我收到以下警告,并且这些报告的文件没有显示在最终的appxupload文件中,因此在运行时无法找到:
1>GENERATEPROJECTPRIFILE : warning PRI263: 0xdef01051 - No default or neutral resource given for 'Files/Data/GI/level1/ca51e77bb6146d425e0c9319844929a0.vis'. The application may throw an exception for certain user configurations when retrieving the resources.
一般情况下,资源情况会有一条警告消息,如下所示:
1>GENERATEPROJECTPRIFILE : warning PRI257: 0xdef00522 - Resources found for language(s) 'be,ca,fa' but no resources found for default language(s): ''. Change the default language or qualify resources with the default language. http://go.microsoft.com/fwlink/?LinkId=231899
报告的语言位于具有语言iso代码的文件夹中(例如,在错误消息中,该文件实际位于文件夹Files / Data / GI / level1 / ca 中/)。但是,这些文件夹不是特定于语言的,由于Unity的内部索引方案,我们无法更改这些文件夹的命名方式。
所以,我要问的是:我如何以及在哪里可以配置Visual Studio或MSBuild的任何部分负责不将这些文件夹视为特定语言?或者这个问题还有其他解决办法吗?
谢谢。
答案 0 :(得分:1)
我找到了解决方案/解决方法。构建的一部分是调用makepri.exe,它创建包资源索引(PRI)文件,这些文件或多或少地包含构建中的文件目录。默认情况下,Makepri会查找以语言命名的文件夹,并按照找到的语言拆分构建 - 这会将特定于语言的文件移动到资源包中。
幸运的是,可以配置此行为,described here - 可以指示makepri将所有内容放在一个大资源文件中而不是拆分。这是通过编辑.csproj文件,并将以下两行添加到Master | x64的配置部分来实现的:
<AppxBundleAutoResourcePackageQualifiers>
DXFeatureLevel
</AppxBundleAutoResourcePackageQualifiers>
<AppxDefaultResourceQualifiers>
Language=en-us;de-de;es-es
</AppxDefaultResourceQualifiers>
第一个标签禁用自动语言限定符(因为“语言”从限定符列表中删除)。由于现在不再自动检测语言,因此必须明确列出它们(第二个标记)。
我没有找到办法做我原本想要的事情 - 指定某些文件夹不应被视为特定于语言 - 但这对我有用。