Nasıl yapılır: Kayıtsız Etkinleştirme için .NET Framework Tabanlı COM Bileşenlerini Yapılandırma

.NET Framework tabanlı bileşenler için kayıtsız etkinleştirme, COM bileşenleri için olduğundan biraz daha karmaşıktır. Kurulum iki bildirim gerektirir:

  • YÖNETILEN bileşeni tanımlamak için COM uygulamalarının Win32 stili bir uygulama bildirimi olmalıdır.

  • .NET Framework tabanlı bileşenler, çalışma zamanında gereken etkinleştirme bilgileri için bir bileşen bildirimine sahip olmalıdır.

Bu konuda bir uygulama bildiriminin bir uygulamayla nasıl ilişkilendirilecekleri açıklanır; bir bileşen bildirimini bir bileşenle ilişkilendirmek; ve bir bileşen bildirimini bir derlemeye ekleyin.

Uygulama bildirimi oluşturma

  1. XML düzenleyicisi kullanarak, bir veya daha fazla yönetilen bileşenle birlikte çalışabilen COM uygulamasının sahip olduğu uygulama bildirimini oluşturun (veya değiştirin).

  2. Dosyanın başına aşağıdaki standart üst bilgiyi ekleyin:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    </assembly>
    

    Bildirim öğeleri ve öznitelikleri hakkında bilgi için bkz . Uygulama Bildirimleri.

  3. Bildirimin sahibini belirleyin. Aşağıdaki örnekte, myComApp bildirim dosyasının sahibi sürüm 1'dir.

    <?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. Bağımlı derlemeleri tanımlama. Aşağıdaki örnekte, myComApp öğesine myManagedCompbağlıdır.

    <?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. Bildirim dosyasını kaydedin ve adlandırın. Uygulama bildiriminin adı, derleme yürütülebilir dosyasının ve ardından .manifest uzantısının adıdır. Örneğin, myComApp.exe için uygulama bildirim dosyası adı myComApp.exe.manifest şeklindedir.

COM uygulamasıyla aynı dizine bir uygulama bildirimi yükleyebilirsiniz. Alternatif olarak, uygulamanın .exe dosyasına kaynak olarak ekleyebilirsiniz. Daha fazla bilgi için bkz . Yan Yana Derlemeler Hakkında.

Bileşen bildirimi oluşturma

  1. XML düzenleyicisi kullanarak yönetilen derlemeyi açıklamak için bir bileşen bildirimi oluşturun.

  2. Dosyanın başına aşağıdaki standart üst bilgiyi ekleyin:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    </assembly>
    
  3. Dosyanın sahibini belirleyin. <assemblyIdentity> Uygulama bildirim dosyasındaki <dependentAssembly> öğesinin öğesi, bileşen bildirimindeki öğeyle eşleşmelidir. Aşağıdaki örnekte, myManagedComp bildirim dosyasının sahibi sürüm 1.2.3.4'dür.

    <?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. Derlemedeki her sınıfı tanımlayın. yönetilen derlemedeki <clrClass> her sınıfı benzersiz olarak tanımlamak için öğesini kullanın. öğesinin alt öğesi <assembly> olan öğesi, aşağıdaki tabloda açıklanan özniteliklere sahiptir.

    Öznitelik Açıklama Gerekli
    clsid Etkinleştirilecek sınıfı belirten tanımlayıcı. Yes
    description Kullanıcıyı bileşen hakkında bilgilendiren bir dize. Boş bir dize varsayılandır. Hayır
    name Yönetilen sınıfı temsil eden bir dize. Yes
    progid Geç bağlı etkinleştirme için kullanılacak tanımlayıcı. Hayır
    threadingModel COM iş parçacığı oluşturma modeli. "Her ikisi" varsayılan değerdir. Hayır
    runtimeVersion Kullanılacak ortak dil çalışma zamanı (CLR) sürümünü belirtir. Bu özniteliği belirtmezseniz ve CLR zaten yüklenmemişse, bileşen CLR sürüm 4'ünden önce yüklenen en son CLR ile yüklenir. v1.0.3705, v1.1.4322 veya v2.0.50727 belirtirseniz, sürüm otomatik olarak CLR sürüm 4'ün (genellikle v2.0.50727) önceki en son yüklü CLR sürümüne iletilir. CLR'nin başka bir sürümü zaten yüklüyse ve belirtilen sürüm işlem içinde yan yana yüklenebiliyorsa, belirtilen sürüm yüklenir; aksi takdirde, yüklenen CLR kullanılır. Bu bir yük hatasına neden olabilir. Hayır
    tlbid Sınıf hakkındaki tür bilgilerini içeren tür kitaplığının tanımlayıcısı. Hayır

    Tüm öznitelik etiketleri büyük/küçük harfe duyarlıdır. OLE/COM ObjectViewer (Oleview.exe) ile derleme için dışarı aktarılan tür kitaplığını görüntüleyerek CLSID'leri, ProgID'leri, iş parçacığı modellerini ve çalışma zamanı sürümünü alabilirsiniz.

    Aşağıdaki bileşen bildirimi, ve testClass2iki sınıfını testClass1 tanımlar.

    <?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. Bildirim dosyasını kaydedin ve adlandırın. Bileşen bildiriminin adı, derleme kitaplığının ve ardından .manifest uzantısının adıdır. Örneğin, myManagedComp.dll myManagedComp.manifest şeklindedir.

Bileşen bildirimini derlemeye kaynak olarak eklemelisiniz.

Yönetilen derlemeye bileşen bildirimi eklemek için

  1. Aşağıdaki deyimi içeren bir kaynak betiği oluşturun:

    1 RT_MANIFEST myManagedComp.manifest

    Bu deyimde, myManagedComp.manifest katıştırılmakta olan bileşen bildiriminin adıdır. Bu örnekte, betik dosyası adı şeklindedir myresource.rc.

  2. Microsoft Windows Kaynak Derleyicisi'ni (Rc.exe) kullanarak betiği derleyin. Komut isteminde aşağıdaki komutu yazın:

    rc myresource.rc

    Rc.exe kaynak dosyasını üretir myresource.res .

  3. Derlemenin kaynak dosyasını yeniden derleyin ve /win32res seçeneğini kullanarak kaynak dosyasını belirtin:

    /win32res:myresource.res

    myresource.res Ekli kaynakları içeren kaynak dosyasının adıdır.

Ayrıca bkz.