Bagikan melalui


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

  1. Menggunakan penyunting XML, buat (atau ubah) manifes aplikasi yang dimiliki oleh aplikasi COM yang beroperasi dengan satu atau beberapa komponen terkendali.

  2. 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.

  3. 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>
    
  4. Identifikasi rakitan dependen. Dalam contoh berikut, myComApp bergantung pada myManagedComp.

    <?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>
    
  5. 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

  1. Menggunakan penyunting XML, buat manifes komponen untuk menjelaskan rakitan terkendali.

  2. 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>
    
  3. 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.4 myManagedComp 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>
    
  4. 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 dan testClass2.

    <?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>
    
  5. 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

  1. 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 adalah myresource.rc.

  2. 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.

  3. 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.

Lihat juga