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解析器都很容易破坏)