Cara: Mengonfigurasi Komponen COM Berbasis .NET Framework untuk Aktivasi Tanpa Pendaftaran
Aktivasi tanpa pendaftaran untuk komponen berbasis .NET Framework hanya sedikit lebih rumit daripada komponen COM. Penyiapan memerlukan dua manifes:
Aplikasi COM harus memiliki manifes aplikasi bergaya Win32 untuk mengidentifikasi komponen terkendali.
Komponen berbasis .NET Framework harus memiliki manifes komponen untuk informasi aktivasi yang diperlukan pada waktu proses.
Topik ini menjelaskan cara mengaitkan manifes aplikasi dengan aplikasi; mengaitkan manifes komponen dengan komponen; dan menyematkan manifes komponen dalam rakitan.
Membuat manifes aplikasi
Menggunakan penyunting XML, buat (atau ubah) manifes aplikasi yang dimiliki oleh aplikasi COM yang beroperasi dengan satu atau beberapa komponen terkendali.
Sisipkan header standar berikut di awal file:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> </assembly>
Untuk mendapatkan informasi tentang elemen manifes dan atributnya, lihat Manifes Aplikasi.
Identifikasi pemilik manifes. Dalam contoh berikut, versi 1
myComApp
memiliki file manifes.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity type="win32" name="myOrganization.myDivision.myComApp" version="1.0.0.0" processorArchitecture="msil" /> </assembly>
Identifikasi rakitan dependen. Dalam contoh berikut,
myComApp
bergantung padamyManagedComp
.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity type="win32" name="myOrganization.myDivision.myComApp" version="1.0.0.0" processorArchitecture="x86" publicKeyToken="8275b28176rcbbef" /> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="myOrganization.myDivision.myManagedComp" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="8275b28176rcbbef" /> </dependentAssembly> </dependency> </assembly>
Simpan dan beri nama file manifes. Nama manifes aplikasi adalah nama rakitan yang dapat dieksekusi diikuti oleh ekstensi .manifest. Contohnya, nama file manifes aplikasi untuk myComApp.exe adalah myComApp.exe.manifest.
Anda dapat memasang manifes aplikasi di direktori yang sama dengan aplikasi COM. Atau, Anda dapat menambahkannya sebagai sumber daya ke file .exe aplikasi. Untuk mendapatkan informasi selengkapnya, lihat Tentang Rakitan Berdampingan.
Membuat manifes komponen
Menggunakan penyunting XML, buat manifes komponen untuk menjelaskan rakitan terkendali.
Sisipkan header standar berikut di awal file:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> </assembly>
Identifikasi pemilik file. Elemen
<assemblyIdentity>
dari elemen<dependentAssembly>
dalam file manifes aplikasi harus cocok dengan yang ada di manifes komponen. Dalam contoh berikut, versi 1.2.3.4myManagedComp
memiliki file manifes.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity name="myOrganization.myDivision.myManagedComp" version="1.2.3.4" publicKeyToken="8275b28176rcbbef" processorArchitecture="msil" /> </assembly>
Identifikasi setiap kelas di rakitan. Gunakan elemen
<clrClass>
untuk mengidentifikasi setiap kelas secara unik dalam rakitan terkendali. Elemen, yang merupakan sub-elemen dari elemen<assembly>
, memiliki atribut yang dijelaskan dalam tabel berikut.Atribut Deskripsi Wajib diisi clsid
Pengidentifikasi yang menentukan kelas yang akan diaktifkan. Ya description
String yang memberi tahu pengguna tentang komponen. String kosong adalah default. No name
String yang mewakili kelas terkendali. Ya progid
Pengidentifikasi yang akan digunakan untuk aktivasi yang terlambat terikat. No threadingModel
Model threading COM. “Keduanya” adalah nilai default. No runtimeVersion
Menentukan versi runtime bahasa umum (CLR) untuk digunakan. Jika Anda tidak menentukan atribut ini, dan runtime bahasa umum belum dimuat, komponen dimuat dengan runtime bahasa umum terbaru yang dipasang sebelum runtime bahasa umum versi 4. Jika Anda menentukan v1.0.3705, v1.1.4322, atau v2.0.50727, versi secara otomatis digulirkan ke versi runtime bahasa umum terbaru yang dipasang sebelum runtime bahasa umum versi 4 (biasanya v2.0.50727). Jika versi runtime bahasa umum lain sudah dimuat dan versi yang ditentukan dapat dimuat secara berdampingan dalam proses, versi yang ditentukan dimuat; jika tidak, runtime bahasa umum yang dimuat digunakan. Hal ini dapat menyebabkan kegagalan pemuatan. No tlbid
Pengidentifikasi pustaka tipe yang memuat informasi jenis tentang kelas. No Semua tag atribut peka huruf besar/kecil. Anda dapat memperoleh CLSID, ProgID, model threading, dan versi runtime bahasa umum dengan melihat pustaka tipe yang diekspor untuk rakitan dengan ObjectViewer OLE/COM (Oleview.exe).
Manifes komponen berikut mengidentifikasi dua kelas,
testClass1
dantestClass2
.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity name="myOrganization.myDivision.myManagedComp" version="1.2.3.4" publicKeyToken="8275b28176rcbbef" /> <clrClass clsid="{65722BE6-3449-4628-ABD3-74B6864F9739}" progid="myManagedComp.testClass1" threadingModel="Both" name="myManagedComp.testClass1" runtimeVersion="v1.0.3705"> </clrClass> <clrClass clsid="{367221D6-3559-3328-ABD3-45B6825F9732}" progid="myManagedComp.testClass2" threadingModel="Both" name="myManagedComp.testClass2" runtimeVersion="v1.0.3705"> </clrClass> <file name="MyManagedComp.dll"> </file> </assembly>
Simpan dan beri nama file manifes. Nama manifes komponen adalah nama pustaka rakitan diikuti oleh ekstensi .manifest. Contohnya, myManagedComp.dll adalah myManagedComp.manifest.
Anda harus menyematkan manifes komponen sebagai sumber daya di rakitan.
Untuk menyematkan manifes komponen dalam rakitan terkendali
Buat skrip sumber daya yang memuat pernyataan berikut:
1 RT_MANIFEST myManagedComp.manifest
Dalam pernyataan ini,
myManagedComp.manifest
adalah nama manifes komponen yang disematkan. Untuk contoh ini, nama file skrip adalahmyresource.rc
.Kompilasi skrip menggunakan Microsoft Windows Resource Compiler (Rc.exe). Pada prompt perintah, jalankan perintah berikut ini:
rc myresource.rc
Rc.exe menghasilkan file sumber daya
myresource.res
.Kompilasi file sumber rakitan lagi dan tentukan file sumber dengan menggunakan opsi /win32res:
/win32res:myresource.res
Sekali lagi,
myresource.res
adalah nama file sumber yang memuat sumber daya yang disematkan.