如何处理x86 vs x64包

时间:2013-08-26 14:19:40

标签: c# visual-studio-2012 nuget

我们使用NuGet来管理我们的第三方套餐。

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

我们现在依赖于依赖于C dll的NuGet包(zeromq),因此发布了x86x64

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

约束

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

修改

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

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

2 个答案:

答案 0 :(得分:5)

然后你有两种方法,

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

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

答案 1 :(得分:0)

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

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