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

本文关键字:安装 组件 运行时 项目 Windows 中的 内置 C++ CX | 更新日期: 2024-07-27 21:41:31

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

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

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

我在Windows 8.1上使用Visual Studio 2013.4。

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

一种方法是创建组件的 VSIX 包。请参阅演练:使用 C++ 创建 SDK,其中准确演示如何使用 C# 项目使用的 WinRT 组件执行此操作。

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

编译 C++/CX 库:

确保为DebugRelease的所有排列编译库,包括Win32ARMx86x64

在 C# 中使用的说明:

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

有关更详细的说明和信息,我强烈建议访问Mike Taulty的博客