在VS2017构建Microsoft Store时,请将文件夹声明为语言中立。

3

我正在使用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的哪个部分,使其不将这些文件夹视为特定于语言?或者是否有其他解决方法?
谢谢。

1
你在 Visual Studio 中构建时是否将文件设置为内容文件?在 VS 中右键单击文件,然后查看其构建操作,如果设置为内容,则会构建为内容文件。顺便说一下,您还可以确保在构建时始终将其设置为复制。 - Barry Wang
谢谢,但它们已经设置为“content”了。请参见下面的解决方案。 - Phil
1个回答

2
我找到了一个解决方案/解决方法。构建的一部分是调用makepri.exe,它创建包资源索引(PRI)文件,这些文件更多或少地包含了构建中的文件目录。默认情况下,makepri会查找以语言命名的文件夹,并沿着它发现的语言分割构建 - 这将把语言特定的文件移动到资源包中。
幸运的是,可以配置此行为,如此处所述 - 可以指示makepri仅将所有内容放入一个大的资源文件中,而不是拆分。这可以通过编辑.csproj文件并将以下两行添加到Master | x64的配置部分来实现:
<AppxBundleAutoResourcePackageQualifiers>
   DXFeatureLevel
</AppxBundleAutoResourcePackageQualifiers>

<AppxDefaultResourceQualifiers>
   Language=en-us;de-de;es-es
</AppxDefaultResourceQualifiers>

第一个标签禁用了自动语言限定符(因为“Language”不在限定符列表中)。由于现在不再自动检测语言,必须明确列出它们(第二个标签)。
我没有找到实现我最初想要的功能的方法 - 指定某些文件夹不应被视为特定语言,但这对我很有效。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接