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.
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 tópico descreve como associar um manifesto de aplicativo a um aplicativo; associar um manifesto de componente a um componente; e insira 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.
Para 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.