64 位元應用程式

更新:2010 年 8 月

當您編譯應用程式時,您可以指定該應用程式在 Windows 64 位元作業系統中是應該當做原生應用程式執行,還是在 WOW64 下執行。 WOW64 是一種可讓 32 位元應用程式在 64 位元系統上執行的相容性環境。 系統中會包含 WOW64。

備註

在 .NET Framework 1.0 或 1.1 上建置的所有應用程式都視為 32 位元應用程式,因此在 64 位元作業系統上一律會在 32 位元 Common Language Runtime (CLR) 的 WOW64 下執行。 此外,在 .NET Framework 4 版上建置的 32 位元應用程式也會在 64 位元系統的 WOW64 下執行。

Visual Studio 在 x86 電腦上會安裝 32 位元版本的 CLR,在 64 位元 Windows 電腦上則會同時安裝 32 位元版本與適當 64 位元版本的 CLR (Visual Studio 2010 是 32 位元應用程式,因此安裝在 64 位元系統上時,會在 WOW64 下執行)。

注意事項注意事項

因為 Itanium 處理器系列的 x86 模擬和 WOW64 子系統的設計,應用程式會被限制只能在一個處理器上執行。這些因素會降低 32 位元 .NET Framework 應用程式在 Itanium 架構系統上執行時的效能與延展性。建議您將使用 .NET Framework 1.1 的應用程式用來做為互動式用戶端應用程式,而不要用來做為需要高效能或高延展性的應用程式,例如高負載的 ASP.NET 應用程式。可以的話,請使用 .NET Framework 4 版,因為它針對 Itanium 架構的系統納入了原生 64 位元支援,可以提供更高的效能與延展性。

在 64 位元 Windows 作業系統上執行 64 位元 Managed 應用程式時,建立的物件大小不可超過 2 GB。

許多組件在 64 位元 CLR 上的執行行為與在 32 位元 CLR 上的執行行為相同。 不過,某些程式的執行行為可能會因 CLR 不同,有下列一個或多個原因:

  • 包含成員的結構在不同平台上會改變大小,如 any 指標型別。

  • 指標算術包含常數大小。

  • 使用 Int32 而非使用 IntPtr 控制代碼的不正確平台叫用 (Invoke) 或 COM 宣告。

  • IntPtr 轉型 (Casting) 為 Int32

如需如何將 32 位元應用程式移植至 64 位元 CLR 上執行的詳細資訊,請參閱 MSDN 網站上的將 32 位元 Managed 程式碼移轉至 64 位元 (英文)。

一般 64 位元程式設計資訊

如需 64 位元程式設計的一般資訊,請參閱下列文件:

建立 64 位元應用程式的編譯器支援

根據預設,在 32 位元或 64 位元電腦上使用 .NET Framework 2.0 建置應用程式時,應用程式在 64 位元電腦上會以原生應用程式的形式 (而不是在 WOW64 下) 執行。 下表列出的文件會教您如何使用 Visual Studio 編譯器,建立以原生方式執行、在 WOW64 之下執行,或者在這兩種方式下都能執行的 64 位元應用程式。

編譯器

編譯器選項

Visual Basic

/platform (Visual Basic)

Visual C#

/platform (C# 編譯器選項)

Visual C++

您可以使用 /clr:safe 建立與平台無關的 Microsoft Intermediate Language (MSIL) 應用程式。 如需詳細資訊,請參閱 /clr (Common Language Runtime 編譯)

Visual C++ 會包含每一種 64 位元作業系統的個別編譯器。 如需如何使用 Visual C++ 建立可在 64 位元 Windows 作業系統上執行之原生應用程式的詳細資訊,請參閱 使用 Visual C++ 進行 64 位元程式設計

JScript

/platform (Visual Studio - JScript)

判斷 .exe 檔案或 .dll 檔案的狀態

若要判斷 .exe 檔案或 .dll 檔案是只能在特定平台上執行,還是可以在 WOW64 下執行,請在命令列使用 corflags.exe。 您也可以使用 corflags.exe 變更 .exe 檔案或 .dll 檔案的平台狀態。 如需詳細資訊,請參閱 CorFlags.exe (CorFlags 轉換工具)。 在 Visual Studio 組件的 CLR 標頭 (或 COM+ 執行階段標頭) 中,執行階段主要版本號碼是設為 2,而執行階段次要版本號碼是設為 5 (在 Visual Studio .NET 2003 組件中為 0)。 執行階段次要版本號碼設為 0 的應用程式會視為舊版應用程式,因此一律會在 WOW64 下執行。

若要以程式設計方式查詢 .exe 或 .dll,以查看它是只能在特定平台上執行還是可以在 WOW64 下執行,請使用 GetPEKind 方法。

請參閱

其他資源

Windows-Based Applications and Components

變更記錄

日期

記錄

原因

2010 年 8 月

更新的連結和版本號碼。

資訊加強。