2013-08-26 54 views
16

我们使用NuGet来管理我们的第三方程序包。如何处理x86与x64程序包

我们还必须构建一个x86x64构建。

我们现在有一个NuGet包(zeromq)依赖于一个C DLL,因此有x86x64版本的依赖。

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

约束

我们的构建对开发商机过程是在Visual Studio中选择合适的配置(即调试/ 86,发行64等),并建立,所以我们使用任何解决方案必须适应Visual Studio GUI(即MSBuild soltuions不会“真正适合我们当前的工作流程)。

编辑

增编约束....如果我们不能在的NuGet自动执行此操作,有没有办法用某种预生成的powershell脚本来做到这一点?即,如果我们知道我们正在构建x86构建,是否有办法挂钩NuGet,以便它使用x86包而不是x64包?

什么是正确的方式来管理这样的NuGet包?

+1

你可能想看看[这个答案](http://stackoverflow.com/a/11376762/80274)它可能会给你一些有条件的预编译脚本的灵感。 –

回答

4

然后你有两种方法,

  • 创建自己的ZeroMQ叉,并按照System.Data.SQLite.org实现本地库预加载。然后你可以创建一个NuGet包而不是两个。

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

+0

谢谢Lex,我认为它会来。 – chollida

+0

目前我接受此答案,因为它至少提供了一些解决方法。希望在未来,NuGet解决这个问题,我们可以选择一个新的答案! – chollida

+0

这有没有什么改进?我有完全相同的问题 – Juancentro