C# 如何处理x86与x64软件包

C# 如何处理x86与x64软件包,c#,visual-studio-2012,nuget,C#,Visual Studio 2012,Nuget,我们使用NuGet来管理我们的第三方软件包 我们还必须构建一个x86和x64版本 我们现在依赖于依赖于C dll的NuGet包(zeromq),因此有x86和x64版本 在Nuget中搜索时,我只看到两个不同的项目(zeromq x64和zeromq x86),而没有看到一个统一的项目 约束 我们在开发人员机器上的构建过程是在visual studio中选择适当的配置(即调试/x86、版本x64等)并进行构建,以便我们使用的任何解决方案都必须适合visual studio GUI(即MSBuil

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

我们还必须构建一个
x86
x64
版本

我们现在依赖于依赖于C dll的
NuGet
包(
zeromq
),因此有
x86
x64
版本

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

约束

我们在开发人员机器上的构建过程是在visual studio中选择适当的配置(即调试/x86、版本x64等)并进行构建,以便我们使用的任何解决方案都必须适合visual studio GUI(即MSBuild解决方案不会真正适合我们当前的工作流)

编辑

约束的补充…如果我们不能在NuGet中自动执行此操作,有没有办法使用某种powershell预构建脚本来执行此操作?ie如果我们知道我们正在构建x86构建,是否有办法钩住NuGet,使其使用x86包而不是x64包


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

我认为最好的方法是


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

那么您有两种方法

  • 创建您自己的ZeroMQ fork,并按照它来实现本机库预加载。然后您可以创建一个NuGet包,而不是两个

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


你可能想看一下,它可能会给你一些关于有条件预构建脚本的灵感。谢谢Mark,我会看一下文档,看看是否可以修改一些东西。谢谢Lex,我认为会这样。我现在接受这个答案,因为它至少提供了一些解决方法。希望将来NuGet能解决这个问题,我们可以选择一个新的答案!这方面有什么改进吗?我有完全相同的问题