Kompatibilitas versi

Kompatibilitas mundur berarti bahwa aplikasi yang dikembangkan untuk versi platform tertentu akan berjalan pada versi platform tersebut yang lebih baru. .NET Framework mencoba memaksimalkan kompatibilitas mundur: Kode sumber yang ditulis untuk satu versi .NET Framework harus dikompilasi pada versi .NET Framework yang lebih baru, dan biner yang berjalan pada satu versi .NET Framework harus berperilaku identik pada versi .NET Framework yang lebih baru .NET Framework.

Kompatibilitas versi untuk aplikasi

Secara default, aplikasi berjalan pada versi .NET Framework yang dibuat. Jika versi tersebut tidak ada dan file konfigurasi aplikasi tidak menentukan versi yang didukung, kesalahan inisialisasi .NET Framework dapat terjadi. Dalam hal ini, upaya untuk menjalankan aplikasi akan gagal.

Untuk menentukan versi tertentu tempat aplikasi Anda berjalan, tambahkan satu atau beberapa <elemen supportedRuntime> ke file konfigurasi aplikasi Anda. Setiap elemen <supportedRuntime> mencantumkan versi waktu proses yang didukung, dengan yang pertama menentukan versi yang paling disukai dan yang terakhir menentukan versi yang paling tidak disukai.

<configuration>
   <startup>
      <supportedRuntime version="v2.0.50727" />
      <supportedRuntime version="v4.0" />
   </startup>
</configuration>

Untuk informasi selengkapnya, lihat Cara: Mengonfigurasi Aplikasi untuk Mendukung .NET Framework 4 atau 4.x.

Kompatibilitas versi untuk komponen

Aplikasi dapat mengontrol versi .NET Framework tempat aplikasi berjalan, tetapi komponen tidak dapat. Komponen dan pustaka kelas dimuat dalam konteks aplikasi tertentu, dan itulah sebabnya mereka secara otomatis berjalan pada versi .NET Framework yang dijalankan aplikasi.

Karena pembatasan ini, jaminan kompatibilitas sangat penting untuk komponen. Dimulai dengan .NET Framework 4, Anda dapat menentukan tingkat di mana komponen diharapkan tetap kompatibel di beberapa versi dengan menerapkan atribut ke komponen tersebutSystem.Runtime.Versioning.ComponentGuaranteesAttribute. Alat dapat menggunakan atribut ini untuk mendeteksi potensi pelanggaran jaminan kompatibilitas dalam versi komponen yang akan datang.

Kompatibilitas mundur

Versi .NET Framework 4.5 dan yang lebih baru kompatibel dengan aplikasi yang dibangun dengan versi .NET Framework yang lebih lama. Dengan kata lain, aplikasi dan komponen yang dibuat dengan versi sebelumnya akan berfungsi tanpa modifikasi pada .NET Framework 4.5 dan versi yang lebih baru. Namun, secara default, aplikasi berjalan pada versi runtime bahasa umum yang dikembangkannya, jadi Anda mungkin harus menyediakan file konfigurasi untuk memungkinkan aplikasi Anda berjalan pada versi .NET Framework 4.5 atau yang lebih baru. Untuk informasi selengkapnya, lihat bagian Kompatibilitas versi untuk aplikasi sebelumnya di artikel ini.

Dalam praktiknya, kompatibilitas ini dapat dipecah dengan perubahan yang tampaknya tidak konsisten dalam .NET Framework dan perubahan teknik pemrograman. Misalnya, peningkatan performa di .NET Framework 4.5 dapat mengekspos kondisi balapan yang tidak terjadi pada versi sebelumnya. Demikian pula, menggunakan jalur yang dikodekan secara permanen ke rakitan .NET Framework, melakukan perbandingan kesetaraan dengan versi .NET Framework tertentu, dan mendapatkan nilai bidang privat dengan menggunakan pantulan bukanlah praktik yang kompatibel mundur. Selain itu, setiap versi .NET Framework mencakup perbaikan bug dan perubahan terkait keamanan yang dapat memengaruhi kompatibilitas beberapa aplikasi dan komponen.

Jika aplikasi atau komponen Anda tidak berfungsi seperti yang diharapkan pada .NET Framework 4.5 atau versi yang lebih baru, gunakan daftar periksa berikut:

  • Jika aplikasi Anda dikembangkan untuk berjalan pada versi .NET Framework apa pun yang dimulai dengan .NET Framework 4.0, lihat Kompatibilitas aplikasi untuk menghasilkan daftar perubahan antara versi .NET Framework yang ditargetkan dan versi tempat aplikasi Anda berjalan.

  • Jika Anda memiliki aplikasi .NET Framework 3.5, lihat juga .NET Framework 4 Masalah Migrasi.

  • Jika Anda memiliki aplikasi .NET Framework 2.0, lihat juga Perubahan di .NET Framework 3.5 SP1.

  • Jika Anda memiliki aplikasi .NET Framework 1.1, lihat juga Perubahan di .NET Framework 2.0.

  • Jika Anda mengompilasi ulang kode sumber yang ada untuk dijalankan pada .NET Framework 4.5 atau rilis titiknya, atau jika Anda mengembangkan versi baru aplikasi atau komponen yang menargetkan .NET Framework 4.5 atau rilis titiknya dari basis kode sumber yang ada, periksa Apa yang Usang di Pustaka Kelas untuk jenis dan anggota usang, dan terapkan solusi yang dijelaskan. (Kode yang dikompilasi sebelumnya akan terus berjalan terhadap jenis dan anggota yang telah ditandai sebagai usang.)

  • Jika Anda menentukan bahwa perubahan pada .NET Framework 4.5 telah merusak aplikasi Anda, periksa Runtime Pengaturan Skema, dan terutama <Elemen AppContextSwitchOverrides>, untuk menentukan apakah Anda dapat menggunakan pengaturan runtime di file konfigurasi aplikasi Anda untuk memulihkan perilaku sebelumnya.

  • Jika Anda menemukan masalah yang tidak didokumenkan, buka masalah di situs Komunitas Pengembang untuk .NET atau buka masalah di repositori microsoft/dotnet GitHub.

Eksekusi berdampingan

Jika Anda tidak dapat menemukan solusi yang sesuai untuk masalah Anda, ingatlah bahwa .NET Framework 4.5 (atau salah satu rilis titiknya) berjalan berdampingan dengan versi 1.1, 2.0, dan 3.5, dan merupakan pembaruan di tempat yang menggantikan versi 4. Untuk aplikasi yang menargetkan versi 1.1, 2.0, dan 3.5, Anda dapat menginstal versi .NET Framework yang sesuai pada komputer target untuk menjalankan aplikasi di lingkungan terbaiknya. Untuk informasi selengkapnya tentang eksekusi berdampingan, lihat Eksekusi Berdampingan.

Lihat juga