我注意到在VS中编译C#代码时,通常有编译32/64位系统的选项,还有一个用于编译任何cpu。
两种选择有什么区别?选择任何CPU只能编译为中间字节代码,而第一个选项编译为机器代码(这听起来不太可能)?或其他什么?
答案 0 :(得分:174)
任何CPU :以32位进程运行,可以加载任何CPU 和 x86 程序集,将获得{{ 1}}如果它尝试加载 x64 程序集。
x86 :与任何CPU 相同。
x64 :BadImageFormatException
。
任何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位模式运行。