是否可以根据目标平台更改 Nuget 包引用?

Posted

技术标签:

【中文标题】是否可以根据目标平台更改 Nuget 包引用?【英文标题】:Is it possible to change a Nuget package reference based on the targeted platform? 【发布时间】:2013-04-15 16:56:33 【问题描述】:

我正在创建一个使用Oracle Data Provider for .Net 的应用程序。我的一些客户将在 32 位环境中运行应用程序,而另一些则在 64 位架构上运行,因此我需要提供两个版本的应用程序。

Oracle Data Provider 有两个不同的 Nuget 包,一个用于x86,另一个用于x64。

有没有办法设置 Nuget 以根据项目构建配置下载或切换到适当的包源?我希望有一种简单的方法可以简单地切换我的项目配置以针对正确的驱动程序进行构建,但我无法发现是否有办法让 Nuget 在这种情况下工作。

【问题讨论】:

我有同样的问题 - 想知道是否有人知道这是否可能 - 从 32 位切换到 64 位后,我在构建时遇到了问题,尤其是在引用两者都包含的 EntityFramework nuget 包时32 位和 64 位版本。 【参考方案1】:

Nuget 包毕竟只是一个 DLL。 因此,与任何 DLL 一样,您可以使用版本控制来指导您的应用程序使用正确的版本。

【讨论】:

这并不能真正回答我的问题。我可以从每个包中下载并提取 dll,但我希望能够继续使用 Nuget 来管理包。这可能是因为这里的两个 Nuget 包具有完全相同的程序集名称,因此可能没有简单的方法来完成我想要完成的工作。

以上是关于是否可以根据目标平台更改 Nuget 包引用?的主要内容,如果未能解决你的问题,请参考以下文章

NuGet包管理平台

是否可以在网络共享的 NuGet 本地源中同时托管常规包和符号包?

NuGet包管理平台

在 Debug 中使用 Project Reference,在 Release 中使用 Nuget

ASP.NET vNext - 重用现有的 nuget 包

NuGet:将包依赖项显式列出为项目中的包引用,以便可以卸载它们