Aracılığıyla paylaş


Nasıl Yapılır: Kayıt Gerektirmeyen 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 manifesto 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 uygulaması için bildirim dosyasının adı myComApp.exe.manifest'tir.

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şturun

  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. <assembly> öğesinin bir alt öğesi olan öğe, aşağıdaki tabloda açıklanan özniteliklere sahiptir.

    Özellik Description 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ı
    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ı
    threadingModel COM iş parçacığı oluşturma modeli. "Her ikisi" varsayılan değerdir. Hayı
    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ı
    tlbid Sınıf hakkındaki tür bilgilerini içeren tür kitaplığının tanımlayıcısı. Hayı

    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, testClass1 ve testClass2 sınıflarını 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 bir 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 istemine 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 bakınız