16

我们NuGet用来管理我们的第三方包。

我们还必须同时构建x86x64构建。

我们现在对依赖于 C dll 的NuGet包 ( zeromq) 具有依赖关系,因此具有x86x64版本。

在 Nuget 中搜索时,我只看到两个不同的项目(zeromq x64 和 zeromq x86),而不是一个统一的项目。

约束

我们在开发人员机器上的构建过程是在 Visual Studio 中选择适当的配置(即 Debug/x86、Release x64 等)并构建,因此我们使用的任何解决方案都必须适合 Visual Studio GUI(即 MSBuild 解决方案不会' 真的很适合我们当前的工作流程)。

编辑

约束附录....如果我们不能在 NuGet 中自动执行此操作,有没有办法使用某种 powershell 预构建脚本来执行此操作?即,如果我们知道我们正在构建 x86 构建,有没有办法挂钩 NuGet,以便它使用 x86 包而不是 x64 包?

像这样管理 NuGet 包的正确方法是什么?

4

2 回答 2

5

然后你有两种方法,

  • 创建自己的 ZeroMQ fork 并按照System.Data.SQLite.org实现 Native Library Pre-loading。然后,您可以创建一个 NuGet 包而不是两个。

  • 为您的可执行文件创建两个项目(相同的源代码,只有两个项目文件)。一个用于 x86,另一个用于 x64。将 ZeroMQ 的 x86 包添加到您的 x86 包中,而将 ZeroMQ 的 x64 包添加到您的 x64 中。它很丑陋,但 IHMO 它避免了在您的项目文件中进行调节(任何错误的 MSBuild 解析器都可以轻松破坏)。

于 2013-08-27T04:51:04.800 回答
-1

我认为一个不错的地方是http://docs.nuget.org/docs/reference/package-manager-console-powershell-reference

据我了解,NuGet 实际上只是用于构建的 Powershell。我建议根据当前正在编译的平台(86/64)设置条件构建,然后将 Get-Package 过滤到您需要的版本。

于 2013-08-27T02:55:50.877 回答