77

可能重复:
Visual Studio“任何 CPU”目标

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

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

4

2 回答 2

193

32 位机器上:

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

  • x86:与任何 CPU相同。

  • x64BadImageFormatException总是。

64 位机器上:

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

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

  • x64:与任何 CPU相同。

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

于 2011-03-08T07:54:46.447 回答
19

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

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

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

于 2011-03-08T07:54:22.027 回答