Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Note
Essas diretrizes são específicas para .NET Framework. Para a interoperabilidade COM moderna do .NET, use a interoperabilidade COM gerada por código-fonte ou a API System.Runtime.InteropServices.ComWrappers. Para obter mais informações, consulte a visão geral da interoperabilidade COM e a geração de origem COM.
A ativação sem registro para componentes baseados no .NET Framework é apenas um pouco mais complicada do que é para componentes COM. A configuração requer dois manifests:
- Os aplicativos COM devem ter um manifesto de aplicativo no estilo Win32 para identificar o componente gerenciado.
- Os componentes baseados no .NET Framework devem ter um manifesto de componente para as informações de ativação necessárias no runtime.
Este artigo descreve como associar um manifesto de aplicativo a um aplicativo; associar um manifesto de componente a um componente; e inserir um manifesto de componente em um assembly.
Criar um manifesto do aplicativo
Usando um editor XML, crie (ou modifique) o manifesto do aplicativo de propriedade do aplicativo COM que está interoperando com um ou mais componentes gerenciados.
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"> </assembly>Para obter informações sobre elementos de manifesto e seus atributos, consulte Manifestos do Aplicativo.
Identifique o proprietário do manifesto. No exemplo a seguir,
myComAppa versão 1 é proprietária do 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" /> </assembly>Identificar assemblies dependentes. No exemplo a seguir,
myComAppdepende demyManagedComp.<?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 executável do assembly seguido pela extensão .manifest. Por exemplo, o nome do arquivo de manifesto do aplicativo para myComApp.exe é myComApp.exe.manifest.
Você pode instalar um manifesto do aplicativo no mesmo diretório que o aplicativo COM. Como alternativa, você pode adicioná-lo como um recurso ao arquivo de .exe do aplicativo. Para obter mais informações, consulte Sobre assemblies lado a lado.
Criar um manifesto de componentes
Usando um editor XML, crie um manifesto de 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"> </assembly>Identifique o proprietário do arquivo. O elemento
<assemblyIdentity>do elemento<dependentAssembly>no arquivo de manifesto do aplicativo deve ser equivalente ao do manifesto do componente. No exemplo a seguir,myManagedCompa 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" /> </assembly>Identifique cada classe na assemblagem. Use o elemento
<clrClass>para identificar exclusivamente cada classe no assembly gerenciado. O elemento, que é um subelemento do<assembly>elemento, tem os atributos descritos na tabela a seguir.Attribute Description Obrigatório clsidO identificador que especifica a classe a ser ativada. Yes descriptionUma cadeia de caracteres que informa o usuário sobre o componente. Uma cadeia de caracteres vazia é o padrão. Não nameUma cadeia de caracteres que representa a classe gerenciada. Yes progidO identificador a ser usado para ativação tardia. Não threadingModelO modelo de threading COM. "Ambos" é o valor padrão. Não runtimeVersionEspecifica a versão clr (common language runtime) a ser usada. Se você não especificar esse atributo e o CLR ainda não estiver carregado, o componente será carregado com o CLR instalado mais recente antes do CLR versão 4. Se você especificar v1.0.3705, v1.1.4322 ou v2.0.50727, a versão avançará automaticamente para a versão mais recente do CLR instalada antes da versão 4 do CLR (geralmente v2.0.50727). Se outra versão do CLR já estiver carregada e a versão especificada puder ser carregada lado a lado no processo, a versão especificada será carregada; caso contrário, o CLR carregado é usado. Isso pode causar uma falha de carga. Não tlbidO identificador da biblioteca de tipos que contém informações de tipo sobre a classe. Não Todas as tags de atributo são sensíveis a maiúsculas e minúsculas. Você pode obter CLSIDs, ProgIDs, modelos de encadeamento e a versão de execução visualizando a biblioteca de tipos exportada do assembly com o Visualizador de Objetos OLE/COM (Oleview.exe).
O manifesto do componente a seguir identifica duas classes
testClass1etestClass2.<?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 de componente é o nome da biblioteca de assemblagem seguido pela extensão de arquivo .manifest. Por exemplo, o myManagedComp.dll é myManagedComp.manifest.
Você deve inserir o manifesto do componente como um recurso no assembly.
Inserir um manifesto de componente em um assembly gerenciado
Crie um script de recurso que contenha a seguinte instrução:
1 RT_MANIFEST myManagedComp.manifestNesta instrução,
myManagedComp.manifesté o nome do manifesto do componente que está sendo incorporado. Para este exemplo, o nome do arquivo de script émyresource.rc.Compile o script usando o Microsoft Windows Resource Compiler (Rc.exe). No prompt de comando, digite o seguinte comando:
rc myresource.rcRc.exe produz o
myresource.resarquivo de recurso.Compile o arquivo de origem do assembly novamente e especifique o arquivo de recurso usando a opção /win32res :
/win32res:myresource.resNovamente,
myresource.resé o nome do arquivo de recurso que contém recursos inseridos.