Como: Configure.NET Framework-Based Components for habilitar livre registro

Habilitar livre registro para.NET Framework-based components é apenas um pouco mais complicado do que é para componentes COM. O programa de instalação requer dois manifestos:

  • Aplicativos COM devem ter um manifesto de aplicativo do estilo do Win32 para identificar o componente gerenciado.

  • .NET Framework-based components devem ter um manifesto do componente para obter informações de ativação necessárias em tempo de execução.

Este tópico descreve como associar um manifesto de aplicativo um aplicativo. associar um manifesto do componente um componente; e incorporar um manifesto do componente em um assembly.

Para criar um manifesto de aplicativo

  1. Usando um editor de XML, crie (ou modifique) pertencente ao aplicativo COM que estiver interoperando com um ou mais componentes gerenciados de manifesto do aplicativo.

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

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

    Para obter informações sobre o manifesto de elementos e seus atributos, procure "Referência de manifestos de aplicativo" em ' Biblioteca MSDN '.

  3. Identifica o proprietário do manifesto. No exemplo a seguir, myComApp versão 1 possui o arquivo de 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" 
      />
    
  4. Identifica os assemblies dependentes. No exemplo a seguir, myComApp depende da 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. Salve e nomeie o arquivo de manifesto. O nome de um manifesto de aplicativo é o nome do assembly executável seguido pela extensão. manifest. Por exemplo, o nome de arquivo de manifesto do aplicativo para myComApp.exe é myComApp.exe.manifest.

Você pode instalar um manifesto de aplicativo no mesmo diretório como o aplicativo COM. Como alternativa, você pode adicioná-lo como um recurso para o arquivo do aplicativo. exe. Para obter informações adicionais, procure por "conjuntos lado a lado" em ' Biblioteca MSDN '.

Para criar um manifesto do componente

  1. Usando um editor de XML, crie um manifesto do componente para descrever o assembly gerenciado.

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

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    
  3. Identifica o proprietário do arquivo. O <assemblyIdentity> o elemento da <dependentAssembly> o elemento no arquivo de manifesto do aplicativo deve corresponder ao especificado no manifesto do componente. No exemplo a seguir, myManagedComp versão 1.2.3.4 possui o arquivo de manifesto.

    <?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"
           />
    
  4. Identifica cada classe no assembly. Use o <clrClass> elemento para identificar exclusivamente cada classe no assembly gerenciado. O elemento, que é um subelemento do <assembly> elemento, tem os atributos descritos na tabela a seguir.

    Atributo

    Descrição

    Necessário

    clsid

    O identificador que especifica a classe para ser ativado.

    Sim

    description

    Uma seqüência de caracteres que informa ao usuário sobre o componente. Uma seqüência vazia é o padrão.

    Não

    name

    Uma seqüência de caracteres que representa a classe gerenciada.

    Sim

    progid

    O identificador a ser usada para ativação de ligação tardia.

    Não

    threadingModel

    O modelo de threading de COM. " Both" é o valor padrão.

    Não

    runtimeVersion

    Especifica a versão de runtime (CLR) de idioma comum para usar. Se você não especificar esse atributo e o CLR não já carregado, o componente é carregado com o CLR instalado mais recentes antes para a versão 4 do CLR. Se você especificar v 1.0.3705, v 1.1.4322 ou v2.0.50727, a versão automaticamente adia para o mais recente instalado CLR versão anterior à versão 4 (geralmente v2.0.50727) do CLR. Se outra versão do CLR já está carregado e a versão especificada pode ser carregada como lado a lado no processo, a versão especificada é carregada; Caso contrário, o CLR carregado é usado. Isso pode causar uma falha de carregamento.

    Não

    tlbid

    O identificador do tipo de biblioteca que contém o tipo de informações sobre a classe.

    Não

    Todas as marcas de atributo diferenciam maiúsculas de minúsculas. Você pode obter os CLSIDs, ProgIDs, threading modelos e a versão de tempo de execução, exibindo a biblioteca de tipos exportados para o assembly com o ObjectViewer OLE/COM (Oleview. exe).

    Manifesto do componente a seguir 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. Salve e nomeie o arquivo de manifesto. O nome de um manifesto do componente é o nome da biblioteca do assembly, seguido pela extensão. manifest. Por exemplo, o myManagedComp.dll é myManagedComp.manifest.

Você deve incorporar o manifesto do componente como um recurso no assembly.

Para incorporar um manifesto do componente em um assembly gerenciado

  1. Crie um script de recurso que contém a instrução a seguir:

    RT_MANIFEST 1 myManagedComp.manifest

    Nesta instrução, myManagedComp.manifest é o nome do manifesto do componente que está sendo incorporado. Neste exemplo, o nome do arquivo de script é myresource.rc.

  2. Compile o script usando o compilador de recursos do Microsoft Windows (rc. exe). No prompt de comando, digite o seguinte comando:

    rc myresource.rc

    RC. exe produz o myresource.res arquivo de recurso.

  3. Compilar novamente o arquivo de origem do assembly e especifique o arquivo de recurso usando o /win32res opção:

    /win32res:myresource.res
    

    Novamente, myresource.res é o nome do arquivo de recurso que contém o recurso incorporado.

Consulte também

Conceitos

Requisitos para interoperabilidade de COM sem registro

Configurando componentes COM para habilitar livre registro

Outros recursos

Interoperabilidade de COM sem registro

Habilitar livre registro do.NET-Based Components: Um passo a passo