Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Note
Panduan ini khusus untuk .NET Framework. Untuk interoperabilitas COM .NET modern, gunakan interop COM yang dihasilkan dari sumber atau API System.Runtime.InteropServices.ComWrappers. Untuk informasi selengkapnya, lihat Gambaran umum interop COM dan pembuatan sumber COM.
Aktivasi bebas pendaftaran untuk komponen berbasis .NET Framework hanya sedikit lebih rumit daripada untuk komponen COM. Penyiapan memerlukan dua manifes:
- Aplikasi COM harus memiliki manifes aplikasi bergaya Win32 untuk mengidentifikasi komponen terkelola.
- Komponen berbasis .NET Framework harus memiliki manifes komponen untuk informasi aktivasi yang diperlukan saat runtime.
Artikel ini menjelaskan cara mengaitkan manifes aplikasi dengan aplikasi; mengaitkan manifes komponen dengan komponen; dan sematkan manifes komponen dalam rakitan.
Membuat manifes aplikasi
Menggunakan editor XML, buat (atau ubah) manifes aplikasi yang dimiliki oleh aplikasi COM yang beroperasi dengan satu atau beberapa komponen terkelola.
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 informasi tentang elemen manifes dan atributnya, lihat Manifes Aplikasi.
Identifikasi pemilik manifes. Dalam contoh berikut,
myComAppversi 1 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,
myComApptergantung 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 file eksekusi pada rakitan diikuti oleh ekstensi .manifest. Misalnya, nama file manifes aplikasi untuk myComApp.exe myComApp.exe.manifest.
Anda dapat menginstal manifes aplikasi di direktori yang sama dengan aplikasi COM. Atau, Anda dapat menambahkannya sebagai sumber daya ke file .exe aplikasi. Untuk informasi selengkapnya, lihat Tentang Rakitan Berdampingan.
Membuat daftar manifes komponen
Menggunakan editor XML, buat manifes komponen untuk menjelaskan rakitan terkelola.
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><dependentAssembly>elemen dalam file manifes aplikasi harus cocok dengan elemen dalam manifes komponen. Dalam contoh berikut,myManagedCompversi 1.2.3.4 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 assembly. Gunakan elemen
<clrClass>untuk mengidentifikasi tiap kelas secara unik di rakitan terkelola. Elemen , yang merupakan subelemen dari<assembly>elemen , memiliki atribut yang dijelaskan dalam tabel berikut.Attribute Description Diperlukan clsidPengidentifikasi yang menentukan kelas yang akan diaktifkan. Yes descriptionString yang memberi tahu pengguna tentang komponen. String kosong adalah default. Tidak. nameSebuah string yang mewakili kelas terkelola. Yes progidPengidentifikasi yang akan digunakan untuk aktivasi yang terlambat terikat. Tidak. threadingModelModel pemrosesan utas COM. "Keduanya" adalah nilai default. Tidak. runtimeVersionMenentukan versi runtime bahasa umum (CLR) yang akan digunakan. Jika Anda tidak menentukan atribut ini, dan CLR belum dimuat, komponen dimuat dengan CLR terbaru yang diinstal sebelum CLR versi 4. Jika Anda menentukan v1.0.3705, v1.1.4322, atau v2.0.50727, versi secara otomatis digulirkan ke versi CLR terbaru yang diinstal sebelum CLR versi 4 (biasanya v2.0.50727). Jika versi clr lain sudah dimuat dan versi yang ditentukan dapat dimuat secara berdampingan dalam proses, versi yang ditentukan dimuat; jika tidak, CLR yang dimuat digunakan. Ini dapat menyebabkan kegagalan beban. Tidak. tlbidPengidentifikasi pustaka tipe yang berisi informasi tipe tentang kelas. Tidak. Semua tag atribut bersifat sensitif terhadap huruf besar dan huruf kecil. Anda dapat memperoleh CLSID, ProgID, model utas, dan versi runtime dengan melihat pustaka jenis yang diekspor untuk rakitan dengan ObjectViewer OLE/COM (Oleview.exe).
Manifes komponen berikut mengidentifikasi dua kelas,
testClass1dantestClass2.<?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 perakitan diikuti oleh ekstensi .manifest. Misalnya, myManagedComp.dll adalah myManagedComp.manifest.
Anda harus menyematkan manifes komponen sebagai sumber daya di rakitan.
Menyematkan manifes komponen dalam rakitan terkelola
Buat skrip sumber daya yang berisi pernyataan berikut:
1 RT_MANIFEST myManagedComp.manifestDalam pernyataan ini,
myManagedComp.manifestadalah nama manifes komponen yang disematkan. Untuk contoh ini, nama file skrip adalahmyresource.rc.Kompilasi skrip menggunakan Microsoft Windows Resource Compiler (Rc.exe). Di Command Prompt, ketik perintah berikut:
rc myresource.rcRc.exe menghasilkan file sumber daya
myresource.res.Kompilasi file sumber assembly lagi dan tentukan file sumber daya dengan menggunakan opsi /win32res :
/win32res:myresource.resSekali lagi,
myresource.resadalah nama file sumber daya yang berisi sumber daya yang disematkan.