Como gerar assemblies de interoperabilidade primários usando o Tlbimp.exe
Há duas maneiras de gerar um assembly de interoperabilidade primário:
Usando o Importador de Biblioteca de Tipos (Tlbimp.exe) fornecido pelo SDK do Windows.
A maneira mais simples de produzir assemblies de interoperabilidade primários é usar o Tlbimp.exe (Importador de Biblioteca de Tipos). Tlbimp.exe prevê as seguintes salvaguardas:
Verifica se há outros assemblies de interoperabilidade primários registrados antes de criar novos assemblies de interoperabilidade para quaisquer referências de biblioteca de tipos aninhados.
Falha ao emitir o assembly de interoperabilidade primário se você não especificar o contêiner ou o nome do arquivo para dar ao assembly de interoperabilidade primário um nome forte.
Falha ao emitir um assembly de interoperabilidade primário se você omitir referências a assemblies dependentes.
Falha ao emitir um assembly de interoperabilidade primário se você adicionar referências a assemblies dependentes que não são assemblies de interoperabilidade primários.
Criação manual de assemblies de interoperabilidade primários no código-fonte usando uma linguagem compatível com a Common Language Specification (CLS), como C#. Essa abordagem é útil quando uma biblioteca de tipos não está disponível.
Você deve ter um par de chaves criptográficas para assinar o assembly com um nome forte. Para obter detalhes, consulte Criando um par de chaves.
Para gerar um assembly de interoperabilidade primário usando Tlbimp.exe
Na linha de comandos, escreva:
tlbimp tlbfile /primary /keyfile: nome do arquivo /out: assemblyname
Neste comando, tlbfile é o arquivo que contém a biblioteca de tipos COM, filename é o nome do contêiner ou arquivo que contém o par de chaves e assemblyname é o nome do assembly a ser assinado com um nome forte.
Os assemblies de interoperabilidade primários podem fazer referência apenas a outros assemblies de interoperabilidade primários. Se o assembly fizer referência a tipos de uma biblioteca de tipos COM de terceiros, você deverá obter um assembly de interoperabilidade primário do editor antes de gerar o assembly de interoperabilidade primário. Se você for o editor, deverá gerar um assembly de interoperabilidade primário para a biblioteca de tipos dependentes antes de gerar o assembly de interoperabilidade primário de referência.
Um assembly de interoperabilidade primário dependente com um número de versão diferente do da biblioteca de tipos original não é detetável quando instalado no diretório atual. Você deve registrar o assembly de interoperabilidade primário dependente no registro do Windows ou usar a opção /reference para ter certeza de que Tlbimp.exe encontra a DLL dependente.
Você também pode encapsular várias versões de uma biblioteca de tipos. Para obter instruções, consulte Como encapsular várias versões de bibliotecas de tipos.
Exemplo
O exemplo a seguir importa a biblioteca LibUtil.tlb
de tipos COM e assina o assembly LibUtil.dll
com um nome forte usando o arquivo CompanyA.snk
de chave . Ao omitir um nome de namespace específico, este exemplo produz o namespace padrão, LibUtil
.
tlbimp LibUtil.tlb /primary /keyfile:CompanyA.snk /out:LibUtil.dll
Para um nome mais descritivo (usando o VendorName.LibraryName naming guideline), o exemplo a seguir substitui o nome do arquivo assembly padrão e o nome do namespace.
tlbimp LibUtil.tlb /primary /keyfile:CompanyA.snk /namespace:CompanyA.LibUtil /out:CompanyA.LibUtil.dll
O exemplo a seguir importa MyLib.tlb
, que faz referência CompanyA.LibUtil.dll
a , e assina o assembly CompanyB.MyLib.dll
com um nome forte usando o arquivo CompanyB.snk
de chave . O namespace, CompanyB.MyLib
, substitui o nome do namespace padrão.
tlbimp MyLib.tlb /primary /keyfile:CompanyB.snk /namespace:CompanyB.MyLib /reference:CompanyA.LibUtil.dll /out:CompanyB.MyLib.dll