Tlbimp.exe (Importador de Biblioteca de Tipos)

O Importador da Biblioteca de Tipos converte as definições de tipo encontradas dentro de uma biblioteca de tipos COM em definições equivalentes em um assembly do Common Language Runtime. A saída de Tlbimp.exe é um arquivo binário (um assembly) que contém os metadados do runtime para os tipos definidos na biblioteca de tipos original. É possível examinar esse arquivo com ferramentas como Ildasm.exe.

Essa ferramenta é instalada automaticamente com o Visual Studio. Para executar a ferramenta, use Visual Studio Prompt de Comando do Desenvolvedor ou Visual Studio Desenvolvedor do PowerShell.

No prompt de comando, digite o seguinte:

Sintaxe

tlbimp tlbFile [options]  

parâmetros

Argumento Descrição
tlbFile O nome de qualquer arquivo que contenha uma biblioteca de tipos COM.
Opção Descrição
/asmversion: versionnumber Especifica o número de versão do assembly a ser produzido. Especifique versionnumber no formato principal.secundária.build.revisão.
/company: companyinformation Adiciona informações da empresa ao assembly de saída.
/copyright: copyrightinformation Adiciona informações de direito autoral ao assembly de saída. Essas informações podem ser exibidas na caixa de diálogo Propriedades de arquivo do assembly.
/delaysign Especifica Tlbimp.exe para assinar o assembly resultante com um nome forte usando a assinatura com atraso. Você deve especificar essa opção com a opção /keycontainer:, /keyfile: ou /publickey:. Para obter mais informações sobre o processo de assinatura com atraso, consulte Assinatura com Atraso de um Assembly.
/help Exibe sintaxe de comando e opções para a ferramenta.
/keycontainer: containername Assina o assembly resultante com um nome forte usando o par de chaves pública/privada encontrado no contêiner de chave especificado por containername.
/keyfile: filename Assina o assembly resultante com um nome forte usando o par de chaves pública/privada oficial do editor encontrado em filename.
/machine: machinetype Cria um assembly com o tipo de computador especificado como alvo (microprocessador). Tipos de computador compatíveis: x86, x64, Itanium e Agnostic.
/namespace: namespace Especifica o namespace no qual produzir o assembly.
/noclassmembers Impede que Tlbimp.exe adicione membros a classes. Isso evita um TypeLoadExceptionem potencial.
/nologo Suprime a exibição do banner de inicialização da Microsoft.
/out: nome do arquivo Especifica o nome do arquivo de saída, o assembly e o namespace no qual gravar as definições de metadados. A opção /out não afetará o namespace do assembly se a biblioteca de tipos especificar o atributo personalizado de linguagem IDL que controla explicitamente o namespace do assembly. Se você não especificar essa opção, Tlbimp.exe gravará os metadados em um arquivo com o mesmo nome da biblioteca de tipos real definido no arquivo de entrada e o atribuirá a uma extensão .dll. Se o arquivo de saída tiver o mesmo nome do arquivo de entrada, a ferramenta gerará um erro para evitar a substituição da biblioteca de tipos.
/primary Produz um assembly de interoperabilidade primário para a biblioteca de tipos especificada. As informações são adicionadas ao assembly, o que indica que o editor da biblioteca de tipos produziu o assembly. Especificando um assembly de interoperabilidade primária, você diferencia o assembly de um editor de todos os outros assemblies criados na biblioteca de tipos usando Tlbimp.exe. Use a opção /primary somente se você for o editor da biblioteca de tipos que está sendo importado com Tlbimp.exe. Você deve assinar um assembly de interoperabilidade primário com um nome forte. Para obter mais informações, consulte Assemblies de Interoperabilidade Primários.
/product: productinformation Adiciona informações do produto ao assembly de saída. Essas informações podem ser exibidas na caixa de diálogo Propriedades de arquivo do assembly.
/productversion: productversioninformation Adiciona informações da versão ao assembly de saída. Não há restrições de formato. Essas informações podem ser exibidas na caixa de diálogo Propriedades de arquivo do assembly.
/publickey: filename Especifica o arquivo que contém a chave pública a ser usada na assinatura do assembly resultante. Se você especificar a opção /keyfile: ou /keycontainer: em vez de /publickey:, Tlbimp.exe gerará a chave pública do par de chaves pública/privada fornecido com /keyfile: ou /keycontainer:. A opção /publickey: dá suporte aos cenários de chave de teste e de assinatura com atraso. O arquivo está no formato gerado por Sn.exe. Para obter mais informações, consulte a opção -p de Sn.exe em Ferramenta Nome Forte (Sn.exe).
/reference: filename Especifica o arquivo do assembly a ser usado para resolver referências para tipos definidos fora da biblioteca de tipos atual. Se você não especificar a opção /reference, Tlbimp.exe importará recursivamente de maneira automática qualquer biblioteca de tipos externa a que a biblioteca de tipos está fazendo referência. Se você especificar a opção /reference, a ferramenta tentará resolver tipos externos nos assemblies referenciados antes de importar outras bibliotecas de tipos.
/silence: warningnumber Suprime a exibição do aviso especificado. Essa opção não pode ser usada com /silent.
/silent Suprime a exibição de mensagens de sucesso. Essa opção não pode ser usada com /silence.
/strictref Não importará uma biblioteca de tipos se a ferramenta não puder resolver todas as referências dentro do assembly atual, os assemblies especificados com a opção /reference ou PIAs (assemblies de interoperabilidade primários).
/strictref:nopia Igual a /strictref, mas ignora PIAs.
/sysarray Especifica a ferramenta para importar um estilo COM SafeArray como um tipo gerenciado Array.
/tlbreference: filename Especifica o arquivo de bibliotecas de tipos a ser usado para resolver referências da biblioteca de tipos sem consultar o Registro.

Essa opção não carregará alguns formatos da biblioteca de tipos anteriores. No entanto, ainda é possível carregar formatos da biblioteca de tipos anteriores implicitamente por meio do Registro ou diretório atual.
/trademark: trademarkinformation Adiciona informações de marca ao assembly de saída. Essas informações podem ser exibidas na caixa de diálogo Propriedades de arquivo do assembly.
/transform: transformname Transforma metadados conforme especificado pelo parâmetro transformname.

Especifique dispret para o parâmetro transformname para transformar parâmetros [out, retval] de métodos em interfaces apenas de expedição (dispinterfaces) em valores retornados.

Para obter mais informações sobre essa opção, consulte os exemplos mais à frente neste tópico.
/unsafe Produz interfaces sem verificações de segurança do .NET Framework. A chamada de um método exposto dessa maneira pode oferecer um risco à segurança. Você não deve usar essa opção, a menos que saiba os riscos de expor esse código.
/verbose Especifica o modo detalhado; exibe informações adicionais sobre a biblioteca de tipos importada.
/VariantBoolFieldToBool Converte campos VARIANT_BOOL em estruturas para Boolean.
/? Exibe sintaxe de comando e opções para a ferramenta.

Observação

As opções de linha de comando para Tlbimp.exe não diferenciam maiúsculas de minúsculas e podem ser fornecidas em qualquer ordem. Você só precisa especificar o suficiente da opção para identificá-la com exclusividade. Portanto, /n é equivalente a /nologo e /ou: outfile.dll é equivalente a /out: outfile.dll.

Comentários

Tlbimp.exe realiza conversões em uma biblioteca de tipos ao mesmo tempo. Não é possível usar a ferramenta para gerar informações de tipo para um subconjunto dos tipos definidos dentro de uma única biblioteca de tipos.

Costuma ser útil ou necessário atribuir nomes fortes a assemblies. Por isso, Tlbimp.exe inclui opções para fornecer as informações necessárias à geração dos assemblies fortemente nomeados. As opções /keyfile: e /keycontainer: assinam assemblies com nomes fortes. Por isso, é lógico fornecer apenas uma dessas opções por vez.

É possível especificar vários assemblies de referência usando a opção /reference várias vezes.

Devido à maneira na qual Tlbimp.exe gera assemblies, não é possível redirecionar um assembly para uma versão mscorlib diferente. Por exemplo, se desejar gerar um assembly que direciona o .NET Framework 2.0, o Tlbimp.exe que acompanha o SDK do .NET Framework 2.0/3.0/3.5 deverá ser usado. Para direcionar o .NET Framework 4.x, o Tlbimp.exe que acompanha um SDK do .NET Framework 4.x deverá ser usado.

Uma ID de recurso pode ser acrescentada a um arquivo da biblioteca de tipos durante a importação de uma biblioteca de tipos de um módulo que contém várias bibliotecas de tipos. Tlbimp.exe só poderá localizar esse arquivo se estiver no diretório atual ou se você especificar o caminho completo. Consulte o exemplo mais à frente neste tópico.

Exemplos

O comando a seguir gera um assembly com o mesmo nome da biblioteca de tipos encontrada em myTest.tlb e com a extensão .dll.

tlbimp myTest.tlb

O comando a seguir gera um assembly com o nome myTest.dll.

tlbimp  myTest.tlb  /out:myTest.dll  

O comando a seguir gera um assembly com o mesmo nome da biblioteca de tipos especificada por MyModule.dll\1 e com a extensão .dll. MyModule.dll\1 deve estar no diretório atual.

tlbimp MyModule.dll\1  

O comando a seguir gera um assembly com o nome myTestLib.dll para a biblioteca de tipos TestLib.dll. A opção /transform:dispret transforma todos os parâmetros [out, retval] de métodos em dispinterfaces na biblioteca de tipos em valores retornados na biblioteca gerenciada.

tlbimp TestLib.dll /transform:dispret /out:myTestLib.dll  

A biblioteca de tipos TestLib.dll, no exemplo anterior, inclui um método dispinterface chamado SomeMethod que retorna nulo e tem um parâmetro [out, retval]. O código a seguir é a assinatura do método de biblioteca de tipos de entrada para SomeMethod em TestLib.dll.

void SomeMethod([out, retval] VARIANT_BOOL*);  

Especificar a opção /transform:dispret faz Tlbimp.exe transformar o parâmetro [out, retval] de SomeMethod em um valor retornado bool. Veja a seguir a assinatura do método produzida por Tlbimp.exe para SomeMethod na biblioteca gerenciada myTestLib.dll quando a opção /transform:dispret é especificada.

bool SomeMethod();  

Se você usar Tlbimp.exe para produzir uma biblioteca gerenciada para TestLib.dll sem especificar /transform:dispret, a ferramenta produzirá a assinatura do método a seguir para SomeMethod na biblioteca gerenciada myTestLib.dll.

void SomeMethod(out bool x);  

Confira também