Dot-Net
C# 編譯為 32/64 位,或任何 cpu?[複製]
可能重複:
我注意到在 VS 中編譯 C# 程式碼時,通常有用於編譯 32/64 位系統的選項,也有用於編譯任何 cpu 的選項。
這兩個選項有什麼區別?選擇任何 CPU 是否只編譯為中間字節碼,而第一個選項編譯為機器碼(這聽起來不太可能)?或者是其他東西?
在32 位機器上:
- 任何 CPU:作為 32 位程序執行,可以載入任何 CPU和x86
BadImageFormatException程序集,如果它嘗試載入x64程序集,將獲得。- x86:與任何 CPU相同。
- x64:
BadImageFormatException總是。在64 位機器上:
- 任何 CPU:作為 64 位程序執行,可以載入任何 CPU和x64
BadImageFormatException程序集,如果它嘗試載入x86程序集,將獲得。- x86:作為 32 位程序執行,可以載入任何 CPU和x86
BadImageFormatException程序集,如果它嘗試載入x64程序集,將獲得。- x64:與任何 CPU相同。
正是JIT 編譯器根據此標誌生成與請求的目標兼容的彙程式式碼。