當您編譯應用程式時,可以指定它應在 Windows 64 位元作業系統上執行,作為原生應用程式或在 WOW64(Windows 64 位元上的 Windows 32 位元)環境下執行。 WOW64 是一種相容性環境,可讓 32 位應用程式在 64 位系統上執行。 WOW64 包含在 Windows作系統的所有 64 位版本中。
在 Windows 上執行 32 位與 64 位應用程式
建置在 .NET Framework 4 或更新版本的 32 位應用程式,會在 64 位系統上的 WOW64 下執行。
備註
由於針對 Itanium 處理器系列設計 x86 模擬和 WOW64 子系統,因此應用程式僅限於在一個處理器上執行。 這些因素可降低在Itanium型系統上執行的32位 .NET 應用程式的效能和延展性。 建議您使用 .NET Framework 4 或更新版本,其中包含Itanium 型系統的原生 64 位支援,以提高效能和延展性。
根據預設,當您在 64 位 Windows 作系統上執行 64 位受控應用程式時,您可以建立不超過 2 GB 的物件。 不過,在 .NET Framework 4.5 和更新版本中,您可以增加此限制。 欲了解更多資訊,請參閱<gcAllowVeryLargeObjects>元素。
許多組件在 32 位元 CLR 和 64 位元 CLR 上以相同方式運行。 不過,如果某些程式包含下列一或多個專案,則根據CLR,可能會有不同的行為:
- 包含根據平台變更大小之成員的結構(例如,任何指標類型)。
- 包含固定大小的指標運算。
- 用不正確的平臺叫用或 COM 宣告來使用
Int32作為而非IntPtr的句柄。 - 進行從
IntPtr到Int32的類型轉換的代碼。
如需如何將 32 位應用程式移植到 64 位 CLR 上執行的詳細資訊,請參閱 將 32 位 Managed 程式代碼移轉至 64 位。
一般 64 位程式設計資訊
如需 64 位程式設計的一般資訊,請參閱下列檔:
- 在 Windows SDK 檔中,請參閱 64 位 Windows 的程式設計指南。
- 如需建立 64 位應用程式之 Visual Studio 支援的相關信息,請參閱 Visual Studio IDE 64 位支援。
建立64位應用程式的編譯程式支援
根據預設,當您使用 .NET 在32位或64位電腦上建置應用程式時,應用程式會在64位電腦上以原生應用程式的形式執行(也就是不在W64下)。 下表列出說明如何使用 Visual Studio 編譯程式建立 64 位應用程式的檔,這些應用程式將在 WOW64 下或兩者下以原生身分執行。
| 編譯器 | 編譯程序選項 |
|---|---|
| Visual Basic | -平台(Visual Basic) |
| Visual C# | -platform (C# 編譯程序選項) |
| Visual C++ | 您可以使用 /clr:safe 來建立與平台無關的通用中繼語言 (CIL) 應用程式。 如需詳細資訊,請參閱 -clr (Common Language Runtime Compilation)。 Visual C++包含每個 64 位作系統的個別編譯程式。 如需如何使用 Visual C++ 建立在 64 位 Windows作系統上執行的原生應用程式的詳細資訊,請參閱 64 位程式設計。 |
判斷 .exe 檔案或 .dll 檔案的狀態
若要判斷 .exe 檔案或 .dll 檔案只打算在特定平臺上或 WOW64 下執行,請使用沒有選項的CorFlags.exe (CorFlags 轉換工具)。 您也可以使用 CorFlags.exe 來變更 .exe 檔案或 .dll 檔案的平台狀態。 Visual Studio 元件的 CLR 標頭將主要運行時間版本號碼設定為 2,次要運行時間版本號碼設定為 5。 將次要運行時間版本設定為 0 的應用程式會被視為舊版應用程式,且一律會在 WOW64 下執行。
若要以程式設計方式查詢 .exe 或 .dll,以查看它是否只打算在特定平臺上或 WOW64 下執行,請使用 Module.GetPEKind 方法。