具有.resx资源的Windows Phone 8.1上的MissingManifestResourceException

DVD*_*DVD 15 resx embedded-resource windows-phone windows-runtime windows-phone-8.1

我正在开发一款同时针对Android的Windows Phone 8.1应用程序(Xamarin)

我一直在PCL上添加我的字符​​串资源(.resx)并在我的启动器项目中引用它们以在我的视图上使用它,这在WP 8.1 silverlight上运行正常,但在配置项目以释放​​并运行它时在WinRt上运行在设备上,由于某种原因,我总是得到一个MissingManifestResourceException.我已经尝试过解决这个问题的所有解决方案而没有任何成功.

请注意,在模拟器上一切正常,当解决方案配置器设置为Debug时,它也适用于设备和模拟器.这里唯一的组合是设备和发布.

应用源代码在Github上.

我能够创建一个简单的项目来复制这个问题,基本上它是一个WP 8.1应用程序和一个带有嵌入式资源的PCL项目,下载链接

有人有什么想法吗?

编辑:经过一些更多的测试,我尝试运行一个旧的Windows 8.1应用程序,我已经使用相同的本地化模型,并出现相同的问题所以它接缝是一个工具问题而不是配置问题,因为Windows 8.1应用程序是在市场上,一切都很顺利.

小智 11

我们的团队遇到了类似的问题,该问题被追溯到运行时而不是PCL,WinRT组件或应用程序包.也就是说,资源存在于应用程序包resources.pri文件中的PCL程序集中,但是在运行时无法找到.

这里有一个活动的Microsoft Connect报告:

https://connect.microsoft.com/VisualStudio/feedback/details/991028/issue-using-resx-files-on-winrt-apps-windows-phone-and-windows

我们的解决方法是让WinRT组件向每个引用的PCL的每个生成的Resources类注入我们自己派生的ResourceManager,它将调用重定向到WinRT ResourceLoader.我写了一篇描述该解决方法的博客文章:

http://blogs.msdn.com/b/philliphoff/archive/2014/11/19/missingmanifestresourceexception-when-using-portable-class-libraries-in-winrt.aspx


bri*_*lam 9

我今天走到了最底层.在捆绑应用程序包时,将删除不适用于应用程序使用的语言的依赖项中的资源.要防止这种情况发生,请将以下程序集级属性添加到应用程序中.

using System.Resources;

[assembly: NeutralResourcesLanguage("en")]
Run Code Online (Sandbox Code Playgroud)