Tlbexp.exe (Exportador de Biblioteca de Tipos)
O Exportador da Biblioteca de Tipos gera uma biblioteca de tipos que descreve os tipos definidos em um assembly do Common Language Runtime.
Essa ferramenta é instalada automaticamente com o Visual Studio. Para executar a ferramenta, use o Prompt de Comando do Desenvolvedor do Visual Studio ou o PowerShell do Desenvolvedor do Visual Studio.
No prompt de comando, digite o seguinte:
Sintaxe
tlbexp assemblyName [options]
Parâmetros
Argumento | Descrição |
---|---|
assemblyName | O assembly para o qual uma biblioteca de tipos deve ser exportada. |
Opção | Descrição |
---|---|
/asmpath: diretório | Especifica o local de pesquisa dos assemblies. Se usar essa opção, você deverá especificar explicitamente os locais de pesquisa dos assemblies referenciados, incluindo o diretório atual. Quando você usa a opção asmpath, o Exportador da Biblioteca de Tipos não procurará um assembly no GAC (cache de assembly global). |
/help | Exibe sintaxe de comando e opções para a ferramenta. |
/names: nome do arquivo | Especifica a capitalização de nomes em uma biblioteca de tipos. O argumento filename é um arquivo de texto. Cada linha no arquivo especifica a capitalização de um nome na biblioteca de tipos. |
/nologo | Suprime a exibição do banner de inicialização da Microsoft. |
/oldnames | Força Tlbexp.exe a exportar nomes de tipo decorados caso haja um conflito no nome do tipo. Esse era o comportamento padrão em versões anteriores ao .NET Framework versão 2.0. |
/out: arquivo | Especifica o nome do arquivo da biblioteca de tipos a ser gerado. Se você omitir essa opção, Tlbexp.exe gerará uma biblioteca de tipos com o mesmo nome do assembly (o nome do assembly real, que talvez não seja necessariamente igual ao arquivo que contém o assembly) e uma extensão .tlb. |
/silêncio: 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. |
/tlbreference: typelibraryname | Força Tlbexp.exe a resolver explicitamente referências da biblioteca de tipos sem consultar o Registro. Por exemplo, se o assembly B fizer referência ao assembly A, será possível usar essa opção para fornecer uma referência à biblioteca de tipos explícita, em vez de depender da biblioteca de tipos especificada no Registro. Tlbexp.exe realiza uma verificação de versão para garantir que a versão da biblioteca de tipos corresponda à versão do assembly; do contrário, ele gerará um erro. Observe que a opção tlbreference ainda consulta o Registro nos casos em que o atributo ComImportAttribute é aplicado a uma interface implementada por outro tipo. |
/tlbrefpath: caminho | Caminho totalmente qualificado para uma biblioteca de tipos referenciada. |
/win32 | Durante a compilação em um computador 64 bits, esta opção especifica que Tlbexp.exe gera uma biblioteca de tipos 32 bits. |
/win64 | Durante a compilação em um computador 32 bits, esta opção especifica que Tlbexp.exe gera uma biblioteca de tipos 64 bits. |
/verbose | Especifica o modo detalhado; exibe uma lista de todos os assemblies referenciados para os quais uma biblioteca de tipos precisa ser gerada. |
/? | Exibe sintaxe de comando e opções para a ferramenta. |
Observação
As opções de linha de comando para Tlbexp.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. Por exemplo, /n é equivalente a /nologo e /o: outfile.tlb é equivalente a /out: outfile.tlb.
Comentários
Tlbexp.exe gera uma biblioteca de tipos que contém definições dos tipos definidos no assembly. Aplicativos como o Visual Basic 6.0 podem usar a biblioteca de tipos gerada na associação com os tipos do .NET definidos no assembly.
Importante
Não é possível usar Tlbexp.exe para exportar arquivos de metadados do Windows (.winmd). Não há suporte para a exportação de assemblies do Windows Runtime.
Todo o assembly é convertido de uma só vez. Não é possível usar Tlbexp.exe para gerar informações de tipo para um subconjunto dos tipos definidos em um assembly.
Não é possível usar Tlbexp.exe para produzir uma biblioteca de tipos com base em um assembly importado usando o Importador da Biblioteca de Tipos (Tlbimp.exe). Em vez disso, você deve consultar a biblioteca de tipos original importada com Tlbimp.exe. É possível exportar uma biblioteca de tipos de um assembly que faz referência a assemblies que foram importados usando-se Tlbimp.exe. Consulte a seção de exemplos abaixo.
Tlbexp.exe coloca bibliotecas de tipos geradas no diretório de trabalho atual ou no diretório especificado para o arquivo de saída. Um único assembly pode fazer várias bibliotecas de tipos serem geradas.
Tlbexp.exe gera uma biblioteca de tipos, mas não a registra. Isso difere da Ferramenta de Registro do Assembly (Regasm.exe), que gera e registra uma biblioteca de tipos. Para gerar e registrar uma biblioteca de tipos com COM, use Regasm.exe.
Se você não especificar /win32
ou a opção /win64
, Tlbexp.exe gerará uma biblioteca de tipos 32 ou 64 bits que corresponde ao tipo do computador no qual você está executando a compilação (computador 32 bits ou 64 bits). Para fins de compilação cruzada, é possível usar a opção /win64
em um computador 32 bits para gerar uma biblioteca de tipos 64 bits e usar a opção /win32
em um computador 64 bits para gerar uma biblioteca de tipos 32 bits. Em bibliotecas de tipos 32 bits, o valor SYSKIND é definido como SYS_WIN32. Em bibliotecas de tipos 64 bits, o valor SYSKIND é definido como SYS_WIN64. Todas as transformações de tipo de dados (por exemplo, tipos de dados do tamanho de ponteiro como, por exemplo, IntPtr
e UIntPtr
) são convertidas adequadamente.
Se você usar o atributo MarshalAsAttribute para especificar um valor SafeArraySubType de VT_UNKNOWN
ou VT_DISPATCH
, Tlbexp.exe ignorará qualquer uso subsequente do campo SafeArrayUserDefinedSubType. Por exemplo, dadas as seguintes assinaturas:
[return:MarshalAs(UnmanagedType.SafeArray, SafeArraySubType=VarEnum.VT_UNKNOWN, SafeArrayUserDefinedSubType=typeof(ConsoleKeyInfo))] public Array StructUnkSafe(){return null;}
[return:MarshalAs(UnmanagedType.SafeArray, SafeArraySubType=VarEnum.VT_DISPATCH, SafeArrayUserDefinedSubType=typeof(ConsoleKeyInfo))] public Array StructDispSafe(){return null;}
a seguinte biblioteca de tipos é gerada:
[id(0x60020004)]
HRESULT StructUnkSafe([out, retval] SAFEARRAY(IUnknown*)* pRetVal);
[id(0x60020005)]
HRESULT StructDispSafe([out, retval] SAFEARRAY(IDispatch*)* pRetVal);
Tlbexp.exe ignora o campo SafeArrayUserDefinedSubType.
Como as bibliotecas de tipos não podem acomodar todas as informações encontradas em assemblies, Tlbexp.exe pode descartar alguns dados durante o processo de exportação. Para ver uma explicação do processo de transformação e a identificação da origem de cada informação emitida para uma biblioteca de tipos, consulte Resumo da Conversão do Assembly em Biblioteca de Tipos.
O Exportador da Biblioteca de Tipos exporta métodos com parâmetros TypedReference como VARIANT
, mesmo que o objeto TypedReference não tenha significado no código não gerenciado. Quando você exportar métodos com parâmetros TypedReference, o Exportador da Biblioteca de Tipos não gerará um aviso ou um erro, e o código não gerenciado que usa a biblioteca de tipos resultante não será executado corretamente.
Exemplos
O comando a seguir gera uma biblioteca de tipos com o mesmo nome do assembly encontrado em myTest.dll
.
tlbexp myTest.dll
O comando a seguir gera uma biblioteca de tipos com o nome clipper.tlb
.
tlbexp myTest.dll /out:clipper.tlb
O exemplo a seguir ilustra o uso de Tlbexp.exe para exportar uma biblioteca de tipos de um assembly que faz referência a assemblies que foram importados usando-se Tlbimp.exe.
Primeiro use Tlbimp.exe para importar a biblioteca de tipos myLib.tlb
e salve-a como myLib.dll
.
tlbimp myLib.tlb /out:myLib.dll
O comando a seguir usa o compilador C# para compilar o Sample.dll
, que faz referência myLib.dll
ao exemplo anterior.
CSC Sample.cs /reference:myLib.dll /out:Sample.dll
O comando a seguir gera uma biblioteca de tipos para Sample.dll
que faz referência a myLib.dll
.
tlbexp Sample.dll