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?

Foi útil?

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:

  1. Gerar o arquivo TLB, por exemplo, "YourLibrary.tlb".

  2. 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).

  3. No arquivo de script, digite o seguinte texto na íntegra (mas substitua o nome real do arquivo TLB é claro):

    1 typelib "YourLibrary.tlb"

  4. Salve o arquivo de script para a mesma pasta que o arquivo TLB.

  5. 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".

  6. No Visual Studio, clique direito no nó do projeto (por exemplo, "YourLibrary") no Solution Explorer e selecione Propriedades.

  7. Na guia Aplicativos, em "Recursos", selecione a opção "Resource File" e navegue até o arquivo "YourLibrary.res" a partir do passo 5.

  8. 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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top