C# compiling for 32/64 bit, or for 'Any CPU'?

Possible Duplicate:
What does the Visual Studio "Any CPU" target mean?

I've noticed that when compiling C# code in Visual Studio, there are typically options for compiling for 32/64 bit systems, and there's also one for compiling for Any CPU.

What's the difference between the two options? Does choosing Any CPU only compile down to an intermediate byte code while the first option compiles down to machine code (this sounds unlikely to me)? Or something else?

66591 次浏览

X86 -您的软件将始终以32位模式运行,包括32位系统和64位系统。

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

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

32位机器上:

  • 任何 CPU : 作为32位进程运行,可以加载 任何中央处理器X86程序集,如果尝试加载 X64程序集,将得到 BadImageFormatException

  • x86: same as 任何中央处理器.

  • X64 : BadImageFormatException always.

On a 64位 machine:

  • 任何 CPU : 作为64位进程运行,可以加载 任何中央处理器x64程序集,如果尝试加载 X86程序集,将得到 BadImageFormatException

  • X86 : 作为32位进程运行,可以加载 任何中央处理器X86程序集,如果尝试加载 X64程序集,将得到 BadImageFormatException

  • x64: same as 任何中央处理器.

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