WP运行时组件 – 类型加载exception?

什么工作>库设置

我有一个包含2个项目的Windows Phone 8解决方案:

  • “Hello”,一个简单的库项目 – >生成Hello.dll
  • “HelloNativeRT”,一个带有C ++文件的WP运行时组件 – >生成HelloNativeRT.dllHelloNativeRT.winmd

在此解决方案中,“Hello”库引用WP运行时组件,因此调用如…

HelloNativeRT.SampleNamespace test = new HelloNativeRT.SampleNamespace(); 

…在这个图书馆项目中工作正常。

什么不起作用> WP8应用程序设置

但是, 我想在Windows Phone 8应用程序中使用这两个库 ,但不添加对项目的引用 ,因为我需要将已编译的库发送给客户端。

  • 我在项目中引用了Hello.dll文件,以及HelloNativeRT.winmd文件。
  • 当我以调试模式启动应用程序时,转到HelloNativeRT.SampleNamespace test = new HelloNative...HelloNativeRT.SampleNamespace test = new HelloNative...它崩溃并说“TypeLoadException”,就像它无法加载本机模块一样。

我想我需要以某种方式包含HelloNativeRT.dll文件,因为我猜它包含本机(编译)代码,因为winmd文件可能只嵌入C ++ / CX代码。

我应该如何设置我的项目以包含此DLL?

我试图将它放在WP8项目的根目录,引用它,嵌入它……没有运气。

在我的情况下,原因很简单:.winmd文件和从WinRT组件生成的.dll文件必须具有相同的名称 (例如:testRT.dll和testRT.winmd)。

然后:

  • 添加.winmd medata文件作为项目中的引用。
  • 检查.winmd / dll文件是否在正确加载的同一文件夹中。

你需要:

  • 添加对托管DLL文件(包装器)的引用
  • 添加对winmd元数据文件(WinPRT组件)的引用,
  • 将您的本机DLL库文件添加为项目成员 ,并选择“ 内容 ”和“ 始终复制 ”的构建操作。
  • 在清单文件中添加一个部分

WPAppManifest:

   external_component.dll    

最后一点是当您从WP8项目引用WinPRT项目时由Visual Studio自动完成的那个;-)我想很多人都没有手动引用本机库,因为关于该点的文档非常稀疏。 我看到提到的解决方案的唯一链接就在这里 ……