Xamarin.Forms UWP与.NetStandard 2.0和null资源

时间:2017-11-14 13:45:12

标签: xamarin.forms uwp resx .net-standard-2.0

我们目前正在将我们的Xamarin项目从PCL迁移到.Net Standard 2.0,也就是核心库项目格式。大多数事情都很好。我们在核心项目中使用resx文件进行本地化。这适用于iOS和Android。

在UWP上我得到null作为值,如果我尝试访问字符串ressources

var buttonText = AppResources.Cancel; // => null

PCL版本相同的代码运行良好。是否需要初始化?

在调试时,我可以看到资源管理器有一个null ResourceSet,但_WinRTResourceManager已填满。

enter image description here

1 个答案:

答案 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中正确使用。