Untuk memahami pengembangan Visual Basic dalam lingkungan .Net, pertama-tama kita tentu saja harus memahami beberapa komponen dari lingkungan .Net dan bagaimana mereka berinteraksi.
Program Visual Basic .Net dicompile dan berjalan didalam kerangka kerja .Net. Mesin untuk mengeksekusi perintah-perintah yang dibuat oleh visual basic dikenal dengan nama common language runtime (CLR). CLR bertugas untuk meloading dan mengeksekusi perintah (kode) dan juga menangani masalah manajemen memori, keamanan, dan tipe-tipe data.
Pada level teratas dari semua ini adalah bahasa visual basic sendiri, atau bahasa-bahasa lain yang digunakan untuk membuat kode-kode perintah yang nantinya mengacu pada CLR. Kompiler VB mengambil kode-kode yang ditulis oleh programmer dan kemudian membuat intermediate language (IL) . Sebagai contoh, file-file DLL dan EXE mengandung IL yang dimengerti oleh CLR. Setiap kode yang dibuat untuk dijalankan dalam CLR dikenal sebagai managed code, karena kode tersebut berjalan dibawah kontrol dari CLR. Managed code adalah sebuah IL , karena setengahnya merupakan high level language (VB) dan setengahnya lagi adalah bahasa tingkat rendah (assembly / bahasa mesin).
Pada saat run-time, CLR mengkompile IL kedalam bentuk native code pada saat program berjalan dengan menggunakan kompiler Just-In-Time (JIT). Kompiler JIT membuat native code sesuai dengan spesifikasi CPU, jadi kita bisa membuat IL dari VB kemudian mengkompilenya untuk komputer dengan arsitektur yang berbeda. Ini kelihatan seolah-olah pemborosan karena mengkompile kode yang sangat banyak pada saat run time, padahal sebenarnya kompiler JIT tidak mengkonversi semua IL menjadi native code, namun hanya mengkonversi yang dibutuhkan / yang akan gunakan.
Keuntungan dari mengkompile dengan menggunakan JIT adalah ruang kerja dari aplikasi bisa dikurangi, karena penggunaan memori komputer untuk memproses intermediate code jauh lebih kecil. Didalam mengeksekusi aplikasi, hanya kode-kode yang dibutuhkan yang dikompile. Kode yang tidak digunakan, seperti kode untuk memprint jika si pengguna tidak memprint maka tidak akan dikompile oleh JIT, selanjutnya CLR bisa mengoptimasi eksekusi program on the fly pada saat run time. Sebagai contoh, dalam platform Windows, CLR mungkin mencari jalan untuk mengurangi page fault dalam memory manager dengan mengatur kembali kode yang sudah dikompile di memori, dan ini bisa dilakukan semua pada saat run time. Dikatan, ada waktu ketika hasil kompilasi JIT bisa meningkatkan performance komputer. Dalam kasus ini, kita bisa menggunakan native image generation (NGen) untuk mencompile IL di tempat program tersebut berjalan
Dapat dilihat, bahwa teknologi CLR menggantikan file-file runtime VB dan juga mengeliminir penggunaan dari COM, DCOM, MTS, or COM+. Aplikasi VB sekarang berjalan dalam konteks CLR, jadi tidak dibutuhkan lagi kumpulan dll yang cukup merepotkan, tentu saja VB net masih bisa menggunakan COM components jika nanti dibutuhkan melalui fitur .NET.