Como incorporar .tlb como um arquivo de recurso em .NET Assembléia DLL?
Pergunta
Estamos usando nosso NET Assembléia DLL dentro C ++ nativo através COM (CCW). Sempre que faço nova versão do meu DLL, eu tenho que enviar dois arquivos (.dll e correspondente .tlb) a tripulação que está a usá-lo em seu código.
É possível ficheiro.tlb incorporar como um recurso no arquivo .NET DLL?
Solução
Não é exatamente fácil de fazer isso com o Visual Studio .NET, mas isso pode ser feito. Em um nível básico, o que você tem a fazer é esta:
-
Gerar o arquivo TLB, por exemplo, "YourLibrary.tlb".
-
Crie um arquivo de script de recurso Win32 chamado, por exemplo, "YourLibrary.rc" utilizando um editor de texto (como o Bloco de Notas, ou Arquivo / Novo / File ... / arquivo de texto no Visual Studio).
-
No arquivo de script, digite o seguinte texto na íntegra (mas substitua o nome real do arquivo TLB é claro):
1 typelib "YourLibrary.tlb"
-
Salve o arquivo de script para a mesma pasta que o arquivo TLB.
-
A partir de um Visual Studio Command Prompt, mude para a pasta com o arquivo de script e compilá-lo usando o seguinte comando:
rc YourLibrary.rc
Isso irá gerar um arquivo de recurso Win32 na mesma pasta chamada "YourLibrary.res".
-
No Visual Studio, clique direito no nó do projeto (por exemplo, "YourLibrary") no Solution Explorer e selecione Propriedades.
-
Na guia Aplicativos, em "Recursos", selecione a opção "Resource File" e navegue até o arquivo "YourLibrary.res" a partir do passo 5.
-
Salvar e reconstruir o projeto.
O TLB será agora incorporado como um recurso na DLL de tal forma que outros aplicativos COM pode lê-lo.
Se você regenerar o arquivo TLB mais tarde você terá que repetir o passo 5 para recompilar o arquivo de recurso, e passo 8 para incorporar a nova versão da DLL.
Tudo o que disse, você pode ser capaz de automatizar algumas das isso com Build Events ou colocando alvos MSBuild personalizados em seu arquivo de projeto, mas isso é uma outra discussão.