UWP,加载Windows运行时组件==请求的Windows运行时类型“...”未被注册

时间:2017-12-25 18:27:46

标签: c# c++ uwp visual-studio-2017

我喜欢为Win / Mac / Linux,Android等创建独立于平台的应用程序,但我遇到的最多问题的平台(iOS除外)是UWP ......

所以现在我想加载一个外部项目,一个Window Runtime Component-dll,当我在Visual Studio的同一个解决方案中将该组件作为项目时,它可以正常工作。

当我在visual studio之外构建组件并将其引用到 我的项目当我调用存储在运行时组件中的类时,我收到此错误:

  

System.TypeLoadException:'请求的Windows运行时类型   “ SharpDepend_UWP_DirectXInterop.D3DPanel ”未注册。内   异常COMException:Klassen har inte registrerats(Exception from   HRESULT:0x80040154(REGDB_E_CLASSNOTREG))

我有这些项目:

  1. 我的项目(UWP app,C#)
  2. SharpDepend_UWP (PCL,C#)
  3. SharpDepend_UWP.DirectXInterop (Windows运行时组件,C ++)
  4. SharpDepend项目是我的外部dll,它们存储在Binaries文件夹中,包含所有输出生成的文件,dll和winmd。

    所有内容都会编译,但在DirectXInterop项目中加载第一个类时会出现错误。

    是否有人是UWP的专家并且知道这个问题? :)

1 个答案:

答案 0 :(得分:0)

我的问题是组件DLL和Winmd文件没有具有相同的名称。 我的组件以'。'命名。 char和Visual Studio编译时Winmd替换'。'到'_'但是没有为DLL文件做到这一点。

注意: 之后我还必须手动将组件项目中的一些文件复制到我的App-project: SimplePixelShader.cso和SimpleVertexShader.cso。 否则我的应用程序没有找到它们,它们似乎没有在dll或winmd文件中烘焙。