我有一个名为foo
的库,它是用C ++ / CX编写的。我选择了一个Windows运行时组件,因为我希望将它投射到C#,C ++和JavaScript中。此外,我希望能够分发库,并且我不想要/允许消费者在与项目相同的解决方案中加载我的项目以及源文件。
MSDN上的说明仅演示了如何在使用C#项目的解决方案中包含Windows运行时组件项目。我知道有一种方法可以只分发二进制文件,但我不知道如何。
这个问题已被问过一千次了,但答案总是在同一个解决方案中有两个项目,不完整或是一种解决方法。
我在Windows 8.1上使用Visual Studio 2013.4。
答案 0 :(得分:3)
一种方法是创建组件的VSIX包。请参阅Walkthrough: Creating an SDK using C++,其中显示了如何使用C#项目使用的WinRT组件执行此操作。
答案 1 :(得分:0)
我研究并找到了答案......它没有很好地记录,它不直观,但是当您看到Windows运行时组件的工作情况时,它是值得的。
编译C ++ / CX库:
确保您在Debug
,Release
,Win32
和ARM
中为x86
和x64
的所有排列编译库。
使用C#消费的说明:
右键单击“解决方案资源管理器”中的“引用”,然后添加对Microsoft Visual C ++运行时包v12.0的引用。然后使用项目的相应配置添加对您创建的二进制文件的引用(即Debug
/ ARM
)。此步骤很棘手,因为文件过滤器会提示您输入.dll
,但您需要将过滤器设置为*.*
并选择.winmd
文件。然后卸载项目,找到刚刚添加的库的<Reference>
标记。 <Reference>
下面会有一个<HintPath>
标记,在<Reference>
下,您还需要添加<IsWinMDFile>true</IsWinMDFile>
和<Implementation>
标记对,其中包含.dll
与.winmd
文件位于同一文件夹中。
有关更详细的说明和信息,我强烈建议您访问Mike Taulty's Blog