我有一个包含2个项目的Windows Phone 8解决方案:
在此解决方案中,“Hello”库引用WP运行时组件,因此调用如...
HelloNativeRT.SampleNamespace test = new HelloNativeRT.SampleNamespace();
...在这个图书馆项目中工作正常。
然而,我想在Windows Phone 8应用程序中使用这两个库,但是而不添加对项目的引用,因为我需要将已编译的库发送到客户端。
HelloNativeRT.SampleNamespace test = new HelloNative...
时,它崩溃并说“TypeLoadException”,就像它无法加载本机模块一样。我想我需要以某种方式包含 HelloNativeRT.dll 文件,因为我猜它包含本机(编译)代码,因为winmd文件可能只嵌入C ++ / CX代码。
如何设置项目以包含此DLL?
我试着将它放在WP8项目的根目录,引用它,嵌入它......没有运气。
答案 0 :(得分:4)
在我的情况下,原因很简单:.winmd文件和从WinRT组件生成的.dll文件必须具有相同名称(例如:testRT.dll和testRT.winmd)。
然后:
答案 1 :(得分:3)
你需要:
WPAppManifest:
<ActivatableClasses>
<InProcessServer>
<Path>external_component.dll</Path>
<ActivatableClass ActivatableClassId="external_component.MyComponent" ThreadingModel="both" />
</InProcessServer>
</ActivatableClasses>
最后一点是当您从WP8项目引用WinPRT项目时由Visual Studio自动完成的那个;-)我想很多人都没有手动引用本机库,因为关于该点的文档很稀疏。我看到提到的解决方案的唯一链接是here ...