如何将C ++ / CX内置的Windows运行时组件安装到C#项目中?

时间:2015-02-24 06:47:10

标签: c# windows-runtime c++-cx winrt-component

我有一个名为foo的库,它是用C ++ / CX编写的。我选择了一个Windows运行时组件,因为我希望将它投射到C#,C ++和JavaScript中。此外,我希望能够分发库,并且我不想要/允许消费者在与项目相同的解决方案中加载我的项目以及源文件。

MSDN上的说明仅演示了如何在使用C#项目的解决方案中包含Windows运行时组件项目。我知道有一种方法可以只分发二进制文件,但我不知道如何。

这个问题已被问过一千次了,但答案总是在同一个解决方案中有两个项目,不完整或是一种解决方法。

我在Windows 8.1上使用Visual Studio 2013.4。

2 个答案:

答案 0 :(得分:3)

一种方法是创建组件的VSIX包。请参阅Walkthrough: Creating an SDK using C++,其中显示了如何使用C#项目使用的WinRT组件执行此操作。

答案 1 :(得分:0)

我研究并找到了答案......它没有很好地记录,它不直观,但是当您看到Windows运行时组件的工作情况时,它是值得的。

编译C ++ / CX库:

确保您在DebugReleaseWin32ARM中为x86x64的所有排列编译库。

使用C#消费的说明:

右键单击“解决方案资源管理器”中的“引用”,然后添加对Microsoft Visual C ++运行时包v12.0的引用。然后使用项目的相应配置添加对您创建的二进制文件的引用(即Debug / ARM)。此步骤很棘手,因为文件过滤器会提示您输入.dll,但您需要将过滤器设置为*.*并选择.winmd文件。然后卸载项目,找到刚刚添加的库的<Reference>标记。 <Reference>下面会有一个<HintPath>标记,在<Reference>下,您还需要添加<IsWinMDFile>true</IsWinMDFile><Implementation>标记对,其中包含.dll.winmd文件位于同一文件夹中。

有关更详细的说明和信息,我强烈建议您访问Mike Taulty's Blog