C#编译32/64位,还是任何cpu?

时间:2011-03-08 07:50:51

标签: .net assemblies 64-bit 32bit-64bit anycpu

  

可能重复:
  Visual Studio “Any CPU” target

我注意到在VS中编译C#代码时,通常有编译32/64位系统的选项,还有一个用于编译任何cpu。

两种选择有什么区别?选择任何CPU只能编译为中间字节代码,而第一个选项编译为机器代码(这听起来不太可能)?或其他什么?

2 个答案:

答案 0 :(得分:174)

32位计算机上:

  • 任何CPU :以32位进程运行,可以加载任何CPU x86 程序集,将获得{{ 1}}如果它尝试加载 x64 程序集。

  • x86 :与任何CPU 相同。

  • 始终
  • x64 BadImageFormatException

64位计算机上:

  • 任何CPU :作为64位进程运行,可以加载任何CPU x64 程序集,将获得{{ 1}}如果它尝试加载 x86 程序集。

  • x86 :以32位进程运行,可以加载任何CPU x86 程序集,将获得{{1如果它试图加载 x64 程序集。

  • x64 :与任何CPU 相同。

JIT编译器根据此标志生成与所请求目标兼容的汇编代码。

答案 1 :(得分:17)

x86 - 您的软件将始终以32位模式运行,无论是在32位系统还是64位系统上。

x64 - 您的软件将始终以64位模式运行,将在64位系统上运行,但不能在32位系统上运行。

任何CPU - 您的软件将根据您的操作系统运行。如果您有32位操作系统,您的代码将以32位模式运行,如果您有64位操作系统,您的代码将以64位模式运行。