Aplikasi 64-bit

Saat mengompilasi aplikasi, Anda dapat menentukan bahwa aplikasi harus berjalan pada sistem operasi Windows 64-bit baik sebagai aplikasi native atau di bawah WOW64 (Windows 32-bit pada Windows 64-bit). WOW64 adalah lingkungan kompatibilitas yang memungkinkan aplikasi 32-bit berjalan pada sistem 64-bit. WOW64 disertakan dalam semua versi 64-bit dari sistem operasi Windows.

Menjalankan Aplikasi 32-bit vs. 64-bit di Windows

Semua aplikasi yang dibangun di .NET Framework 1.0 atau 1.1 diperlakukan sebagai aplikasi 32-bit pada sistem operasi 64-bit dan selalu dijalankan di bawah WOW64 dan runtime bahasa umum (CLR) 32-bit. Aplikasi 32-bit yang dibangun di .NET Framework 4 atau versi yang lebih baru juga berjalan di bawah WOW64 pada sistem 64-bit.

Visual Studio memasang versi 32-bit dari runtime bahasa umum pada komputer x86, serta versi 32-bit dan versi 64-bit yang sesuai dari runtime bahasa umum pada komputer Windows 64-bit. (Karena Visual Studio adalah aplikasi 32-bit, ketika dipasang pada sistem 64-bit, Visual Studio berjalan di bawah WOW64.)

Catatan

Karena desain emulasi x86 dan subsistem WOW64 untuk keluarga prosesor Itanium, aplikasi dibatasi untuk dijalankan pada satu prosesor. Faktor-faktor ini mengurangi performa dan skalabilitas aplikasi .NET Framework 32-bit yang berjalan pada sistem berbasis Itanium. Sebaiknya gunakan .NET Framework 4, yang menyertakan dukungan 64-bit native untuk sistem berbasis Itanium, guna meningkatkan performa dan skalabilitas.

Secara default, saat menjalankan aplikasi terkelola 64-bit pada sistem operasi Windows 64-bit, Anda dapat membuat objek yang tidak lebih dari 2 gigabyte (GB). Namun, di .NET Framework 4.5, Anda dapat meningkatkan batas ini. Untuk informasi selengkapnya, lihat <Elemen> gcAllowVeryLargeObjects.

Banyak assembly berjalan secara identik pada CLR 32-bit dan CLR 64-bit. Namun, beberapa program mungkin berperilaku berbeda, tergantung pada runtime bahasa umum, jika berisi satu atau beberapa hal berikut:

  • Struktur yang berisi anggota yang ukurannya berubah tergantung pada platform (misalnya, jenis pointer apa pun).

  • Aritmatika pointer yang mencakup ukuran konstanta.

  • Pemanggilan platform yang salah atau deklarasi COM yang menggunakan Int32 untuk handel, bukan IntPtr.

  • Kode yang mentransmisikan IntPtr ke Int32.

Untuk informasi selengkapnya tentang cara mem-porting aplikasi 32-bit agar berjalan di runtime bahasa umum 64-bit, lihat Memigrasikan Kode Terkelola 32-bit ke 64-bit.

Informasi Umum Pemrograman 64-Bit

Untuk informasi umum tentang pemrograman 64-bit, lihat dokumen berikut:

Dukungan Pengompilasi untuk Membuat Aplikasi 64-Bit

Secara default, saat Anda menggunakan .NET Framework untuk membuat aplikasi di komputer 32-bit atau 64-bit, aplikasi akan berjalan di komputer 64-bit sebagai aplikasi native (yaitu, bukan di bawah WOW64). Tabel berikut mencantumkan dokumen yang menjelaskan cara menggunakan pengompilasi Visual Studio untuk membuat aplikasi 64-bit yang akan berjalan sebagai native, di bawah WOW64, atau keduanya.

Kompilator Opsi pengompilasi
Visual Basic -platform (Visual Basic)
Visual C# -platform (Opsi Pengompilasi C#)
Visual C++ Anda dapat membuat aplikasi platform-agnostic, common intermediate language (CIL) dengan menggunakan /clr:safe. Untuk informasi selengkapnya, lihat -clr (Kompilasi Runtime Bahasa Umum).

Visual C++ menyertakan pengompilasi terpisah untuk setiap sistem operasi 64-bit. Untuk informasi selengkapnya tentang cara menggunakan Visual C++ untuk membuat aplikasi native yang berjalan pada sistem operasi Windows 64-bit, lihat Pemrograman 64-bit.

Menentukan Status File .exe atau File .dll

Untuk menentukan apakah file .exe atau file .dll dimaksudkan untuk dijalankan hanya pada platform tertentu atau di bawah WOW64, gunakan CorFlags.exe (Alat Konversi CorFlags) tanpa opsi. Anda juga dapat menggunakan CorFlags.exe untuk mengubah status platform file .exe atau file .dll. Header runtime bahasa umum dari assembly Visual Studio memiliki nomor versi runtime bahasa umum utama yang diatur ke 2 dan nomor versi runtime bahasa umum minor yang diatur ke 5. Aplikasi yang memiliki versi runtime bahasa umum minor yang diatur ke 0 diperlakukan sebagai aplikasi lama dan selalu dijalankan di bawah WOW64.

Untuk meminta .exe atau .dll secara terprogram untuk melihat apakah file tersebut dimaksudkan untuk berjalan hanya pada platform tertentu atau di bawah WOW64, gunakan metode Module.GetPEKind.