Partilhar via


Como: Configurar componentes COM baseados no .NET Framework para ativação sem necessidade de registo

A ativação sem registo para componentes baseados em .NET Framework é apenas ligeiramente mais complicada do que para componentes COM. A configuração requer dois manifestos:

  • As aplicações COM devem ter um manifesto de aplicação ao estilo Win32 para identificar o componente gerido.

  • Os componentes baseados no .NET Framework devem ter um manifesto de componentes para a informação de ativação necessária em tempo de execução.

Este tópico descreve como associar um manifesto de aplicação a uma aplicação; associar um manifesto de componente a um componente; e incorporar um manifesto de componente numa assembleia.

Criar um manifesto de aplicação

  1. Usando um editor XML, crie (ou modifique) o manifesto da aplicação pertencente à aplicação COM que está a interoperar com um ou mais componentes geridos.

  2. Insira o seguinte cabeçalho padrão no início do ficheiro:

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

    Para informações sobre elementos manifestos e os seus atributos, consulte Manifestos de Aplicação.

  3. Identifique o proprietário do manifesto. No exemplo seguinte, myComApp a versão 1 é proprietária do ficheiro manifesto.

    <?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. Identificar assemblies dependentes. No exemplo seguinte, myComApp depende de 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. Guarda e nomeia o ficheiro do manifesto. O nome de um manifesto de aplicação é o nome do executável assembly seguido da extensão .manifest. Por exemplo, o nome do ficheiro manifest da aplicação para myComApp.exe é myComApp.exe.manifest.

Pode instalar um manifesto de aplicação no mesmo diretório da aplicação COM. Em alternativa, pode adicioná-lo como recurso ao ficheiro .exe da aplicação. Para mais informações, consulte Sobre Montagens Lado a Lado.

Criar um manifesto de componentes

  1. Usando um editor XML, crie um manifesto de componentes para descrever a assembly gerida.

  2. Insira o seguinte cabeçalho padrão no início do ficheiro:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    </assembly>
    
  3. Identifique o proprietário do ficheiro. O elemento <assemblyIdentity> do elemento <dependentAssembly> no ficheiro manifesto da aplicação deve corresponder ao do manifesto do componente. No exemplo seguinte, myManagedComp a versão 1.2.3.4 detém o ficheiro manifest.

    <?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. Identifique cada classe na assembleia. Use o elemento <clrClass> para identificar de forma única cada classe na assembly gerido. O elemento, que é um subelemento do <assembly> elemento, tem os atributos descritos na tabela seguinte.

    Attribute Description Obrigatório
    clsid O identificador que especifica a classe a ativar. Yes
    description Uma cadeia que informa o utilizador sobre o componente. Uma cadeia vazia é o padrão. Não
    name Uma string que representa a classe gerenciada. Yes
    progid O identificador a ser usado para ativação com limite tardio. Não
    threadingModel O modelo de threading COM. "Ambos" é o valor padrão. Não
    runtimeVersion Especifica a versão do Common Language Runtime (CLR) a utilizar. Se não especificar este atributo, e o CLR ainda não estiver carregado, o componente é carregado com o CLR instalado mais recente antes da versão 4 do CLR. Se especificar v1.0.3705, v1.1.4322 ou v2.0.50727, a versão avança automaticamente para a versão mais recente instalada do CLR anterior à versão 4 do CLR (normalmente v2.0.50727). Se outra versão do CLR já estiver carregada e a versão especificada puder ser carregada lado a lado durante o processo, a versão especificada é carregada; caso contrário, é utilizado o CLR carregado. Isto pode causar uma falha de carga. Não
    tlbid O identificador da biblioteca de tipos que contém a informação de tipo sobre a classe. Não

    Todas as etiquetas de atributos são sensíveis a maiúsculas minúsculas. Pode obter CLSIDs, ProgIDs, modelos de encadeamento e a versão em tempo de execução ao visualizar a biblioteca de tipos exportada para o assembly com o OLE/COM ObjectViewer (Oleview.exe).

    O seguinte manifesto de componentes identifica duas classes, testClass1 e 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. Guarda e nomeia o ficheiro do manifesto. O nome de um manifesto componente é o nome da biblioteca assembly seguido da extensão .manifest. Por exemplo, o myManagedComp.dll é myManagedComp.manifest.

Tens de incorporar o manifesto do componente como um recurso na assembleia.

Para incorporar um manifesto de componente num assembly gerido

  1. Crie um script de recurso que contenha a seguinte instrução:

    1 RT_MANIFEST myManagedComp.manifest

    Nesta afirmação, myManagedComp.manifest é o nome do manifesto do componente que está a ser incorporado. Neste exemplo, o nome do ficheiro de script é myresource.rc.

  2. Compilar o script usando o Microsoft Windows Resource Compiler (Rc.exe). No prompt de comando, digite o seguinte comando:

    rc myresource.rc

    Rc.exe produz o myresource.res ficheiro de recursos.

  3. Compila novamente o ficheiro fonte da assembly e especifica o ficheiro de recurso usando a opção /win32res :

    /win32res:myresource.res

    Mais uma vez, myresource.res é o nome do ficheiro de recurso que contém recursos embutidos.

Consulte também