我们目前正在将我们的Xamarin项目从PCL迁移到.Net Standard 2.0,也就是核心库项目格式。大多数事情都很好。我们在核心项目中使用resx文件进行本地化。这适用于iOS和Android。
在UWP上我得到null
作为值,如果我尝试访问字符串ressources
var buttonText = AppResources.Cancel; // => null
PCL版本相同的代码运行良好。是否需要初始化?
在调试时,我可以看到资源管理器有一个null
ResourceSet,但_WinRTResourceManager
已填满。
答案 0 :(得分:6)
最后我找到了原因。
通过将PCL库转换为.Net Standar,通常文件AssemblyInfo.cs
不存在。所以中性语言定义会丢失。
我们使用德语(de-DE)作为默认语言。只要我将Package.appxmanifest
中的默认语言从默认值en-US
更改为de-DE
,就无法读取.Net标准库中的资源。
修复方法是,为.Net标准库定义MIDIXResourcesLanguage(与UWP项目相同)。这可以在手动创建的AssemblyInfo.cs中完成(不要忘记关闭AssemblyInfo的自动生成)或使用[assembly: NeutralResourcesLanguage("de-DE")]
在其中一个现有类中声明此信息。
在此修复之后,.Net标准库中的资源也在UWP中正确使用。