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級架構應用條件引用您從中使用其代碼的項目。