如何知道在构建中使用哪个cpu(x86 x64或AnyCpu)?

时间:2012-02-09 20:33:45

标签: c# visual-studio-2010

我正在使用Windows 7和x64 cpu。 这是否意味着我应该始终在Visual Studio中使用“x64”选项进行编译?那么“dll”,我可以使用x64应用程序中的x86 dll吗?可能还有其他问题吗?

4 个答案:

答案 0 :(得分:7)

This article包含每个选项的简要概述。

这是一个小小的引用:

  

默认设置Any CPU表示程序集将运行   目前正在运行的CPU本机上。意思是,它会运行   在64位计算机上为64位,在32位计算机上为32位。如果   从64位应用程序调用程序集,它将作为一个   64位汇编等等。

     

如果项目设置为x86,则表示该项目旨在   仅作为32位进程运行。 64位进程将无法调用   进入组件集X86。将项目设置为x86的原因   包括仅在可用的本机DLL上的依赖项   假设32位,32位或进行本机调用。应用和   标记为x86的程序集仍可在64位Windows上运行。然而   他们在WOW64下运行。 Visual Studio本身在此仿真下运行   模式,因为它是一个32位应用程序。

     

将项目设置为x64将指定程序集必须运行   在64位Windows下。试图在32位上运行程序集   Windows或从32位进程调用程序集将导致a   运行时错误。

答案 1 :(得分:4)

一般来说,您应该始终使用AnyCpu

如果您有特殊原因要求兼容性问题,那么您需要根据需要选择x86或x64。

如评论中所述,针对特定体系结构构建的dll可能需要您以某种方式构建程序集。当您需要时,这将是您想要做的事情,而不是其他。

答案 2 :(得分:2)

不...您编写代码的机器/编译/构建您的软件(EXE,DLL ...)与目标(x86 / x64 / Any)的问题没有任何关系。

如果您希望构建的结果在任何地方运行,请使用x86或AnyCPU。如果您希望结果仅在x64上运行,那么您可以使用x64。

在某些情况下,您必须使用x86或x64 - 即在您的项目中使用某些(第三方?)组件/库/ DLL / ActiveX等时仅32位(然后是x86)或仅仅64位(然后是x64)。

答案 3 :(得分:1)

AnyCPU是我通常推荐的。您可以在this SO post深入讨论此问题。

唯一的问题是你不能倒退 - 你不能在x86应用程序中使用x64程序集。 AnyCPU缓解了这一潜在的陷阱。