【问题标题】:VS2012 Choosing between x86, x64, AnyCPU, AnyCPU32bitpreferred and Referencing 3rd Party DLLsVS2012 在 x86、x64、AnyCPU、AnyCPU32bitpreferred 和引用 3rd 方 DLL 之间进行选择
【发布时间】:2013-07-19 04:33:20
【问题描述】:
我正在寻找有关设置新 VS2012 C# 项目的最佳方法的建议。我想同时针对 x86 和 x64 架构。但是,我有必须引用的第 3 方 DLL。提供了同一个 DLL 的两个版本;一个为 x86 和 x64 编译。话虽如此,我是否需要专门针对 x86 和 x64?我认为 AnyCPU 或新的 AnyCPU32bitpreferred 不适合我的情况。此外,在同一个项目中引用 DLL 的正确方法是什么(它们具有相同的名称,但一个是 32 位,另一个是 64 位)。谢谢。
【问题讨论】:
标签:
visual-studio-2012
x86
64-bit
anycpu
dll-reference
【解决方案1】:
您的项目设置应侧重于“目标”计算机,而不是编译计算机。如果您的目标系统是 32 位,那么您应该引用第三方库的 x86 版本,否则如果您的目标计算机是 64 位,那么您应该引用 x64 版本。
您不应该/不能将这两个库引用到同一个项目中。在任何情况下,您都可以维护项目的两个并行版本,它们仅在参考部分有所不同。
如果您需要创建 x64 安装程序,那么您可能还会检查以下问题的答案:BadImageFormatException x64 Issue
如果您不重新分发第 3 方 DLL,并且您假设它们先前已安装在目标系统上,并且您的开发不需要/使用 x64 集的任何特殊功能,AnyCPU 可能会很有用。在这种情况下,您的代码将以它们安装的格式调用第 3 方 DLL。