我们使用NuGet
来管理我们的第三方套餐。
我们还必须同时构建x86
和x64
版本。
我们现在依赖于依赖于C dll的NuGet
包(zeromq
),因此发布了x86
和x64
。
在Nuget中搜索时,我只看到两个不同的项目(zeromq x64和zeromq x86),而不是一个统一的项目。
约束
我们在开发人员机器上的构建过程是在visual studio中选择适当的配置(即Debug / x86,Release x64等),因此我们使用的任何解决方案都必须适合visual studio GUI(即MSBuild soltuions)不会'真的适合我们当前的工作流程。)
修改
约束的附录....如果我们不能在NuGet中自动执行此操作,是否有办法使用某种powershell prebuild脚本执行此操作?即如果我们知道我们正在构建x86构建是否有一种方法来挂钩NuGet,以便它使用x86 packaes而不是x64包?
管理像这样的NuGet包的正确方法是什么?
答案 0 :(得分:5)
然后你有两种方法,
创建自己的ZeroMQ fork并按照System.Data.SQLite.org实现Native Library Pre-loading。然后你可以创建一个NuGet包,而不是两个。
为您的可执行文件创建两个项目(相同的源代码,只有两个项目文件)。一个用于x86,另一个用于x64。将ZeroMQ的x86软件包添加到x86软件包中,将ZeroMQ的x64软件包添加到x64软件包中。这很丑陋,但IHMO它避免了你的项目文件中的条件(任何错误的MSBuild解析器都可以轻松破解它)。
答案 1 :(得分:0)
我认为一个好看的地方是http://docs.nuget.org/docs/reference/package-manager-console-powershell-reference
据我所知,NuGet实际上只是Powershell for Build。我建议根据正在编译的当前平台(86/64)设置条件构建,然后将Get-Package过滤到您需要的版本。