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
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.
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 '.
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" />
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>
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
Usando um editor de XML, crie um manifesto do componente para descrever o assembly gerenciado.
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">
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" />
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>
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
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.
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.
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