Poradnik: Konfigurowanie aktywacji bez rejestracji składników COM opartych na platformie .NET Framework

Aktywacja bezpłatna rejestracji dla składników opartych na programie .NET Framework jest tylko nieco bardziej skomplikowana niż w przypadku składników COM. Konfiguracja wymaga dwóch manifestów:

  • Aplikacje COM muszą mieć manifest aplikacji w stylu Win32, aby zidentyfikować składnik zarządzany.

  • Składniki oparte na programie .NET Framework muszą mieć manifest składnika na potrzeby informacji o aktywacji wymaganych w czasie wykonywania.

W tym temacie opisano sposób kojarzenia manifestu aplikacji z aplikacją; skojarz manifest składnika ze składnikiem; i osadź manifest składnika w zestawie.

Tworzenie manifestu aplikacji

  1. Za pomocą edytora XML utwórz (lub zmodyfikuj) manifest aplikacji należący do aplikacji COM, która współdziała z co najmniej jednym składnikiem zarządzanym.

  2. Wstaw następujący standardowy nagłówek na początku pliku:

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

    Aby uzyskać informacje o elementach manifestu i ich atrybutach, zobacz Application Manifests (Manifesty aplikacji).

  3. Zidentyfikuj właściciela manifestu. W poniższym przykładzie myComApp wersja 1 jest właścicielem pliku manifestu.

    <?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. Identyfikowanie zestawów zależnych. W poniższym przykładzie myComApp zależy od myManagedCompelementu .

    <?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. Zapisz i nadaj plikowi manifestu nazwę. Nazwa manifestu aplikacji to nazwa pliku wykonywalnego zestawu, po którym następuje rozszerzenie manifestu. Na przykład nazwa pliku manifestu aplikacji dla myComApp.exe to myComApp.exe.manifest.

Manifest aplikacji można zainstalować w tym samym katalogu co aplikacja COM. Alternatywnie możesz dodać go jako zasób do pliku .exe aplikacji. Aby uzyskać więcej informacji, zobacz About Side-by-Side Assemblies (Informacje o zestawach równoległych).

Tworzenie manifestu składnika

  1. Za pomocą edytora XML utwórz manifest składnika w celu opisania zarządzanego zestawu.

  2. Wstaw następujący standardowy nagłówek na początku pliku:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    </assembly>
    
  3. Zidentyfikuj właściciela pliku. Element <assemblyIdentity> elementu w pliku manifestu <dependentAssembly> aplikacji musi być zgodny z elementem w manifeście składnika. W poniższym przykładzie myManagedComp wersja 1.2.3.4 jest właścicielem pliku manifestu.

    <?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. Zidentyfikuj każdą klasę w zestawie. Użyj elementu , <clrClass> aby unikatowo zidentyfikować każdą klasę w zarządzanym zestawie. Element, który jest podelementem <assembly> elementu, ma atrybuty opisane w poniższej tabeli.

    Atrybut opis Wymagania
    clsid Identyfikator określający klasę do aktywowania. Tak
    description Ciąg, który informuje użytkownika o składniku. Pusty ciąg jest domyślny. Nie.
    name Ciąg reprezentujący klasę zarządzaną. Tak
    progid Identyfikator, który ma być używany do aktywacji powiązanej z opóźnieniem. Nie.
    threadingModel Model wątkowania COM. Wartość domyślna to "Oba". Nie.
    runtimeVersion Określa wersję środowiska uruchomieniowego języka wspólnego (CLR) do użycia. Jeśli nie określisz tego atrybutu, a clR nie jest jeszcze załadowany, składnik zostanie załadowany z najnowszą zainstalowaną clR przed CLR w wersji 4. Jeśli określisz wersję 1.0.3705, 1.1.4322 lub 2.0.50727, wersja zostanie automatycznie przekazana do najnowszej zainstalowanej wersji CLR wcześniejszej niż CLR w wersji 4 (zazwyczaj w wersji 2.0.50727). Jeśli jest już załadowana inna wersja środowiska CLR, a określona wersja może zostać załadowana równolegle, zostanie załadowana określona wersja; w przeciwnym razie jest używana załadowana clR. Może to spowodować niepowodzenie ładowania. Nie.
    tlbid Identyfikator biblioteki typów, która zawiera informacje o typie klasy. Nie.

    Wszystkie tagi atrybutów są uwzględniane w wielkości liter. Identyfikatory CLSID, progID, modele wątkowe i wersja środowiska uruchomieniowego można uzyskać, wyświetlając wyeksportowaną bibliotekę typów dla zestawu za pomocą programu OBJECTViewer OLE/COM (Oleview.exe).

    Poniższy manifest składnika identyfikuje dwie klasy i testClass1testClass2.

    <?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. Zapisz i nadaj plikowi manifestu nazwę. Nazwa manifestu składnika to nazwa biblioteki zestawów, po której następuje rozszerzenie manifestu. Na przykład myManagedComp.dll to myManagedComp.manifest.

Manifest składnika należy osadzić jako zasób w zestawie.

Aby osadzić manifest składnika w zestawie zarządzanym

  1. Utwórz skrypt zasobu zawierający następującą instrukcję:

    1 RT_MANIFEST myManagedComp.manifest

    W tej instrukcji myManagedComp.manifest jest nazwą osadzonego manifestu składnika. W tym przykładzie nazwa pliku skryptu to myresource.rc.

  2. Skompiluj skrypt przy użyciu kompilatora zasobów systemu Microsoft Windows (Rc.exe). W wierszu polecenia wpisz następujące polecenie:

    rc myresource.rc

    Rc.exe tworzy myresource.res plik zasobu.

  3. Skompiluj ponownie plik źródłowy zestawu i określ plik zasobu przy użyciu opcji /win32res :

    /win32res:myresource.res

    myresource.res Ponownie jest nazwą pliku zasobu zawierającego zasoby osadzone.

Zobacz też