MissingManifestResourceException来自从UWP调用的PCL汇编代码

Jef*_*son 5 .net c# unit-testing resx win-universal-app

我的Visual Studio 2015解决方案包含以下项目:

  • .NET程序集
  • UWP组装
  • PCL组装
  • .NET单元测试库
  • UWP单元测试应用程序

PCL程序集包含一个嵌入的字符串资源表(通过项目中的RESX文件)和一个允许调用者从字符串资源表中获取字符串的简单类.PCL旨在允许在.NET和UWP程序集之间共享字符串.

运行.NET单元测试库时,单元测试调用.NET程序集,该程序集从PCL程序集中获取字符串.这按预期工作.

当运行UWP单元测试应用程序时,单元测试调用UWP程序集,该程序集从PCL程序集中获取字符串.此操作失败,并显示以下异常消息:

System.Resources.MissingManifestResourceException:无法为包[guid]中的资源文件[blah]加载资源.

我尝试了这个解决方案,但调用GetForViewIndependentUse()失败,COMException并声明"未找到ResourceMap".

这是怎么回事?此调用链适用于.NET单元测试堆栈.我已经检查过以确保所有组件的中性语言都设置为"英语".在.NET程序集和UWP程序集之间共享字符串表的最佳方法是什么?

dan*_*iar 7

过去几天我处理的是"MissingManifestResourceException".我还检查了微软博客文章和关于Xamarin的MVP帖子.应用建议的解决方案后,我得到了与"未找到ResourceMap"相同的错误.

最后,我决定回到主要问题,我仔细检查了MSDN中错误"MissingManifestResourceException"的描述,它说:

如果主程序集不包含中性文化的资源,则抛出异常,并且缺少适当的附属程序集.

来源:https://msdn.microsoft.com/en-us/library/system.resources.missingmanifestresourceexception(v=vs.110).aspx

所以,我刚刚去了PCL并设立了一个中立文化(语言)

  1. 在解决方案资源管理器中,右键单击项目,然后单击"属性".
  2. 从左侧导航栏中选择"应用程序",然后单击"程序集信息".
  3. 在"装配信息"对话框中,从"中性语言"下拉列表中选择语言.
  4. 单击确定.

资料来源:https://msdn.microsoft.com/en-us/library/bb385967.aspx

问题解决了!