2

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

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

我该如何着手创建这样一个NuGet包?

回答

2

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

实施是这里在GitHub上: https://github.com/Microsoft/Win2D

要特别注意自己的nuspec是如何构建的,该项目是如何构建的释放文物建筑到子文件夹,以及他们如何有.targets文件为3级架构应用条件引用您从中使用其代码的项目。