如何处理x86与x64软件包

本文关键字:x86 x64 软件包 处理 何处理 | 更新日期: 2023-09-27 18:29:00

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

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

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

在Nuget中搜索时,我只看到两个不同的项目(zeromqx64和zeromqx86),而没有看到一个统一的项目。

约束

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

编辑

约束的附录。。。。如果我们不能在NuGet中自动做到这一点,那么有没有一种方法可以通过某种powershell预构建脚本来做到?即,如果我们知道我们正在构建x86版本,是否有方法挂接NuGet,使其使用x86包而不是x64包?

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

如何处理x86与x64软件包

然后有两种方法,

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

  • 为可执行文件创建两个项目(相同的源代码,只有两个项目文件)。一个用于x86,另一个用于x64。将ZeroMQ的x86软件包添加到x86软件包中,而将ZeroMQ的x64软件包添加至x64软件包中。它很难看,但IHMO避免了项目文件中的条件反射(任何糟糕的MSBuild解析器都很容易破坏它)。

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

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