如何处理x86 vs x64包

cho*_*ida 16 c# nuget visual-studio-2012

我们NuGet用来管理我们的第三方软件包.

我们还必须构建x86x64构建.

我们现在依赖于一个依赖于C dll 的NuGetpackage(zeromq),因此有一个x86x64release.

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

约束

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

编辑

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

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

Lex*_* Li 5

那你有两种方法,

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

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