为本机Windows运行时组件创建nuget包

时间:2015-05-29 08:17:55

标签: visual-studio-2013 windows-runtime windows-8.1 nuget c++-cx

我使用Visual Studio 2013创建了一个Windows运行时组件。我使用C ++ / CX构建了它。我为此使用了Visual C ++ Windows运行时项目模板,因此输出是DLL和winmd文件。

我想为这个组件创建一个NuGet包,这样只要添加一个NuGet引用并调用API,它就可以被任何类型的Windows 8.1 Store应用程序项目(C ++ / CX,C#或JavaScript)使用。除此之外,不应该要求这个NuGet包的消费者担心任何事情。

如何创建这样的NuGet包?

1 个答案:

答案 0 :(得分:2)

我自己也在研究同样的问题。似乎WinRT C ++项目只针对一个特定的体系结构进行编译。因此,使用C#可移植类库中的一个意味着您不能再编译为" AnyCPU"对本土世界一无所知! :)所以,我还没有从微软本身找到答案(就演练而言),但我找到了一个能够相当优雅地解决问题的实现。使用条件引用,并在一个NuGet包中编译和发送所有3 x86,x64和ARM,它们克服了这个问题。使用他们的解决方案,您无法编译为AnyCPU,但由于条件参考逻辑,可以毫不费力地在x86,x64和ARM之间进行编译。

实现在GitHub上: https://github.com/Microsoft/Win2D

特别注意他们的nuspec是如何构建的,项目如何将发布工件构建到体系结构子文件夹中,以及它们如何将3个体系结构的.targets文件应用于您使用其代码的项目中的条件引用。