WP8:不能消耗本机组件(WP8: can't consume a native compo

2019-07-03 14:30发布

的Windows Phone 8的C#项目( MyApp ),从WP7.1迁移。 我已经添加了原生的Windows运行时组件库( AppLib )的解决方案,创造了一个参考。 有一个公共密封引用类( MyClass在里面)。 有一个在C#代码对它的引用(在OnLoaded主XAML页面)。 整个事情编译 - 这意味着正在生成组件的元数据。

当我尝试运行,该项目失败,出现异常或类型TypeLoadException以下消息:

类型名称或命名空间不是在元数据文件中找到。 (从HRESULT异常:0x8000000F)

无论AppLib.DLL和AppLib.winmd可以在XAP被发现。 该winmd包含有关类型的信息,并在正确的命名空间,太。 我还需要检查?

在异常时,AppLib.dll未在调试器的模块窗口中列出。 这是因为如果由于某种原因,DLL加载失败。

我以全新的类试图在任意命名空间 - 同样的问题。 貌似问题是在DLL的水平,而不是一流水平。

Answer 1:

该WinMD文件的名称必须是在任何公开和激活的类型声明的名称空间的名称的前缀。 例如,如果你的WinMD名为AppLib.winmd,MyClass类型必须在命名空间中定义AppLib或其他一些命名嵌套在该命名空间中,例如AppLib::Something

还必须在“最佳匹配” WinMD声明,因此,如果您的类型被命名为ABMyClass和你在你的包兼得A.winmdABwinmd,类型必须在ABwinmd定义。

Windows运行时使用,以确定其类型WinMD文件定义类型的名称。 另请参见我的回答“XAML找不到本地命名空间的参考。”



文章来源: WP8: can't consume a native component