Mendaftarkan rakitan .NET Framework dengan COM

Note

Artikel ini menjelaskan panduan interop COM .NET Framework yang menggunakan Assembly Registration Tool (Regasm.exe) legacy, Global Assembly Cache, dan registrasi COM berbasis registri. Untuk .NET modern, gunakan pembuatan sumber COM atau ComWrappers API. Untuk informasi selengkapnya, lihat interop COM.

Anda dapat menjalankan alat baris perintah yang disebut Assembly Registration Tool (Regasm.exe) untuk mendaftar atau membatalkan pendaftaran .NET Framework assembly untuk digunakan dengan COM. Regasm.exe menambahkan informasi tentang kelas ke registri sistem sehingga klien COM dapat menggunakan kelas .NET Framework secara transparan. Kelas ini RegistrationServices menyediakan fungsionalitas yang setara.

Untuk .NET Framework, komponen terkelola harus terdaftar di registri Windows sebelum dapat diaktifkan dari klien COM. Tabel berikut ini memperlihatkan kunci yang biasanya Regasm.exe tambahkan ke registri Windows. (000000 menunjukkan nilai GUID aktual.)

GUID Deskripsi kunci registri
CLSID Pengidentifikasi kelas HKEY_CLASSES_ROOT\CLSID\{000…000}
IID Pengidentifikasi antarmuka HKEY_CLASSES_ROOT\Interface\{000…000}
LIBID Pengidentifikasi perpustakaan HKEY_CLASSES_ROOT\TypeLib\{000…000}
ProgID Pengidentifikasi terprogram HKEY_CLASSES_ROOT\000…000

Di bawah kunci HKCR\CLSID\{0000…0000}, nilai default diatur ke ProgID kelas, dan dua nilai baru bernama, yaitu Kelas dan Majelis, ditambahkan. Runtime membaca nilai assembly dari registri dan meneruskannya ke resolver assembly Runtime. Resolver assembly mencoba menemukan assembly berdasarkan informasi seperti nama dan nomor versi. Agar penyelesai assembly dapat menemukan assembly, assembly harus berada di salah satu lokasi berikut:

  • Cache rakitan global (harus rakitan dengan nama kuat).

  • Di direktori aplikasi. Rakitan yang dimuat dari jalur aplikasi hanya dapat diakses oleh aplikasi tersebut.

  • Sepanjang jalur berkas yang ditentukan dengan pilihan /codebase untuk Regasm.exe.

Regasm.exe juga membuat kunci InProcServer32 di bawah HKCR\CLSID\{0000…0000}. Nilai default untuk kunci diatur ke nama DLL yang menginisialisasi runtime bahasa terpadu (Mscoree.dll).

Memeriksa entri registri

Interop COM dalam .NET Framework menyediakan implementasi pabrik kelas standar untuk membuat instans kelas .NET Framework apa pun. Klien dapat memanggil DllGetClassObject DLL terkelola untuk mendapatkan pabrik kelas dan membuat objek, seperti yang mereka lakukan dengan komponen COM lainnya.

Untuk subkunci InprocServer32, referensi ke Mscoree.dll muncul sebagai pengganti pustaka tipe COM tradisional untuk menunjukkan bahwa runtime bahasa umum .NET membuat objek terkelola.

Baca juga