Dot-Net

C# 編譯為 32/64 位,或任何 cpu?[複製]

  • March 8, 2011

可能重複:

Visual Studio“任何 CPU”目標

我注意到在 VS 中編譯 C# 程式碼時,通常有用於編譯 32/64 位系統的選項,也有用於編譯任何 cpu 的選項。

這兩個選項有什麼區別?選擇任何 CPU 是否只編譯為中間字節碼,而第一個選項編譯為機器碼(這聽起來不太可能)?或者是其他東西?

32 位機器上:

  • 任何 CPU:作為 32 位程序執行,可以載入任何 CPUx86BadImageFormatException程序集,如果它嘗試載入x64程序集,將獲得。
  • x86:與任何 CPU相同。
  • x64BadImageFormatException總是。

64 位機器上:

  • 任何 CPU:作為 64 位程序執行,可以載入任何 CPUx64BadImageFormatException程序集,如果它嘗試載入x86程序集,將獲得。
  • x86:作為 32 位程序執行,可以載入任何 CPUx86BadImageFormatException程序集,如果它嘗試載入x64程序集,將獲得。
  • x64:與任何 CPU相同。

正是JIT 編譯器根據此標誌生成與請求的目標兼容的彙程式式碼。

引用自:https://stackoverflow.com/questions/5229768