智者不为愚者谋,勇者不为怯者死。这篇文章主要讲述PrimaryLanguageOverride在发布appxbundle中不起作用相关的知识,希望能为你提供帮助。
我目前正在开发一个UWP项目,我已经实现了语言更改功能,下面是用于执行此操作的代码段
Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride = App.userLang;
await Task.Delay(100);
Frame.Navigate(typeof(MainPage));
调试时该功能正常,但从侧面加载的应用程序包安装的应用程序中的功能不起作用。为什么是这样? (该功能不适用于手机或PC)
答案一个可能的原因是在安装期间未安装覆盖语言的资源。
默认情况下,在构建应用程序包(.appxbundle)时,只有语言,比例和DirectX功能级别的默认资源才会内置到应用程序包中。您可以将
.appxbundle
文件重命名为.zip
文件以查看其内容,appxbundle
本质上是一个zip文件。在捆绑包内,您可以找到具有默认资源的应用包,看起来像
YourPackage_1.0.0.1_x64.appx
其他语言的资源包,它们是单独的.appx,看起来像
YourPackage_1.0.0.1_language-fr.appx
YourPackage_1.0.0.1_language-de.appx
在安装期间,仅安装应用程序包和设备主要语言所需的资源。因此,如果您稍后切换到另一种语言,则该应用无法加载该资源。
如果您的应用程序是通过Windows应用商店分发的,则会自动从商店下载所需的资源,但这不会发生,因为您的应用是侧载的。
要验证它是否是原因,只需双击缺少语言的资源包即可安装它,然后重新启动应用程序以观察症状消失。
解决方案是Build resources into your app package, instead of into a resource pack。
简短的回答
【PrimaryLanguageOverride在发布appxbundle中不起作用】打开项目文件(.csproj),将以下行添加到
PropertyGroup
元素。<
AppxDefaultResourceQualifiers>
Language=en-US;
fr-FR;
...(add all the languages you need to support)<
/AppxDefaultResourceQualifiers>
推荐阅读
- 是否可以在没有管理员权限的情况下安装.appxbundle(UWP / XAML应用程序)()
- 如何在android中的接口回调内部传输数据
- 在ASP.NET MVC App中初始化AutoMapper v6时出错
- 可捕获的致命错误(类Proxies的对象 __ CG __AppBundleEntityModelo无法转换为字符串)
- 使用appcmd添加新的网站问题
- 根据PC更改app.config连接字符串
- 当文件实际引用v10时,找不到v11.0WebApplicationsMicrosoft.WebApplication.targets
- 如何在Android中做像Combobox这样的“东西”()
- 如何在android studio 3中使用photoview 2.0.0