Tlbexp.exe (Exportador de Biblioteca de Tipos)
O Exportador de Biblioteca de Tipos gera uma biblioteca de tipos que descreve os tipos definidos em um assembly de Common Language Runtime.
Esta ferramenta é instalada automaticamente com o Visual Studio. Para executar a ferramenta, use o Visual Studio Developer Command Prompt ou o Visual Studio Developer PowerShell.
Na linha de comandos, escreva o seguinte:
Sintaxe
tlbexp assemblyName [options]
Parâmetros
Argumento | Description |
---|---|
assemblyName | O assembly para o qual exportar uma biblioteca de tipos. |
Opção | Description |
---|---|
/asmpath: diretório | Especifica o local para procurar assemblies. Se você usar essa opção, deverá especificar explicitamente os locais para procurar assemblies referenciados, incluindo o diretório atual. Quando você usa a opção asmpath , o Exportador de Biblioteca de Tipos não procurará um assembly no cache de assembly global (GAC). |
/Ajuda | Exibe a sintaxe do comando e as opções da ferramenta. |
/names: nome do ficheiro | 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. |
/nomes antigos | Força Tlbexp.exe a exportar nomes de tipo decorados se houver um conflito de nome de tipo. Observe que esse era o comportamento padrão em versões anteriores ao .NET Framework versão 2.0. |
/out: arquivo | Especifica o nome do arquivo de 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 real do assembly, que pode não ser necessariamente o mesmo que o arquivo que contém o assembly) e uma extensão .tlb. |
/silêncio: warningnumber |
Suprime a exibição do aviso especificado. Esta opção não pode ser usada com /silent. |
/silent | Suprime a exibição de mensagens de sucesso. Esta opção não pode ser usada com /silence. |
/tlbreference: typelibraryname | Força Tlbexp.exe a resolver explicitamente referências de biblioteca de tipos sem consultar o registro. Por exemplo, se o assembly B fizer referência ao assembly A, você poderá usar essa opção para fornecer uma referência explícita de biblioteca de tipos, em vez de confiar na biblioteca de tipos especificada no Registro. Tlbexp.exe executa uma verificação de versão para garantir que a versão da biblioteca de tipos corresponda à versão do assembly; caso contrário, gera um erro. Observe que a opção tlbreference ainda consulta o registro nos casos em que o atributo é aplicado a uma interface que é implementada ComImportAttribute por outro tipo. |
/tlbrefpath: caminho | Caminho totalmente qualificado para uma biblioteca de tipos referenciada. |
/win32 | Ao compilar em um computador de 64 bits, essa opção especifica que Tlbexp.exe gera uma biblioteca de tipos de 32 bits. |
/win64 | Ao compilar em um computador de 32 bits, essa opção especifica que Tlbexp.exe gera uma biblioteca de tipos de 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 a sintaxe do comando e as opções da ferramenta. |
Nota
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 exclusivamente. Por exemplo, /n é equivalente a /nologo, e /o: outfile.tlb é equivalente a /out: outfile.tlb.
Observações
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 gerados para vincular aos tipos .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 Tempo de Execução do Windows.
Todo o conjunto é 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 a partir de um assembly que foi importado usando o Importador de Biblioteca de Tipos (Tlbimp.exe). Em vez disso, você deve consultar a biblioteca de tipos original que foi importada com Tlbimp.exe. Você pode exportar uma biblioteca de tipos de um assembly que faz referência a assemblies que foram importados usando Tlbimp.exe. Veja 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 com que várias bibliotecas de tipos sejam geradas.
Tlbexp.exe gera uma biblioteca de tipos, mas não a registra. Isso contrasta com a ferramenta Assembly Registration (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 a /win32
opção ou /win64
, Tlbexp.exe gerará uma biblioteca de tipos de 32 bits ou 64 bits que corresponde ao tipo de computador no qual você está executando a compilação (computador de 32 bits ou 64 bits). Para fins de compilação cruzada, você pode usar a /win64
opção em um computador de 32 bits para gerar uma biblioteca de tipos de 64 bits e pode usar a /win32
opção em um computador de 64 bits para gerar uma biblioteca de tipos de 32 bits. Em bibliotecas de tipos de 32 bits, o SYSKIND valor é definido como SYS_WIN32. Em bibliotecas de tipos de 64 bits, o SYSKIND valor é definido como SYS_WIN64. Todas as transformações de tipo de dados (por exemplo, tipos de dados do tamanho de um ponteiro, como IntPtr
e UIntPtr
) são convertidas adequadamente.
Se você usar o MarshalAsAttribute atributo para especificar um SafeArraySubType valor de VT_UNKNOWN
ou VT_DISPATCH
, Tlbexp.exe ignorará qualquer uso subsequente do SafeArrayUserDefinedSubType campo. Por exemplo, com 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);
Observe que Tlbexp.exe ignora o SafeArrayUserDefinedSubType campo.
Como as bibliotecas de tipos não podem acomodar todas as informações encontradas em assemblies, Tlbexp.exe podem descartar alguns dados durante o processo de exportação. Para obter uma explicação do processo de transformação e identificação da fonte de cada informação emitida para uma biblioteca de tipos, consulte o Resumo de conversão de assembly para biblioteca de tipos.
Observe que o Exportador de Biblioteca de Tipos exporta métodos que têm TypedReference parâmetros como VARIANT
, mesmo que o TypedReference objeto não tenha significado em código não gerenciado. Quando você exporta métodos que têm TypedReference parâmetros, o Exportador de Biblioteca de Tipos não gerará um aviso ou 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 no 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 do Tlbexp.exe para exportar uma biblioteca de tipos de um assembly que faz referência a assemblies que foram importados usando Tlbimp.exe.
Primeiro, use Tlbimp.exe para importar a biblioteca myLib.tlb
de tipos e salvá-la como myLib.dll
.
tlbimp myLib.tlb /out:myLib.dll
O comando a seguir usa o compilador C# para compilar o Sample.dll
, cujas referências myLib.dll
criadas no exemplo anterior.
CSC Sample.cs /reference:myLib.dll /out:Sample.dll
O comando a seguir gera uma biblioteca de tipos para Sample.dll
essas referências myLib.dll
.
tlbexp Sample.dll