tentando obter TFS teambuild para construir c#>VB6>aplicação c# (ComReference prob?)

StackOverflow https://stackoverflow.com//questions/10700607

  •  13-12-2019
  •  | 
  •  

Pergunta

Eu estou tentando chegar TFS equipe-construir de forma confiável construir um WPF C# app.Este aplicativo depende de um VB6Lib.dll que nós mantemos, este VB6Lib.dll si depende de outras C# libs que nós também mantemos.

Eu configurar uma definição de compilação para compilação (em ordem):

  • VbDependencies.sln (todas as libs no que isso tem de interoperabilidade definidos, assim, o VB6 pode encontrar o seu TLBs)
  • buildVB6Lib.proj (um arquivo do msbuild que chama de "VB6.exe /fazer /d" para fazer o VBLib.dll sobre o compilação do servidor, como parte do script que eu tenho de copiar o VB6Lib.dll saída para C: mp)
  • MainApp.sln (na minha área de trabalho, adicionei uma referência para C: mp\VB6Lib.dll)

Será que este som ok ?No meu dev laptop eu costumo criar o VB6, cópia de sua saída para mp e, em seguida, regsvr32 lá antes de adicionar uma referência a ele no meu C# solução.É este o passo que eu não estou convencido de que a minha construção def está fazendo.

Além disso, existe uma maneira de obter mais útil saída do VB6 construir, atualmente recebo a mensagem "Erro de Compilação no Arquivo 'xxx.bas' Pode' localizar o projeto da biblioteca", mas não que a real biblioteca, que ele não pode encontrar.

cheers

Foi útil?

Solução

Você está correto em que o ponto crítico no processo de construção no desenvolvimento do sistema reside no registro de objeto COM.No entanto, de um modo geral não quiser registrar o objeto no servidor de compilação, pois isso pode causar todos os tipos de problemas de versionamento e silencioso falhas quando o errado objeto é registrado ou o registo falhar.

A maneira correta de fazer isso é para gerar um assembly de interoperabilidade manualmente e de referência que, em vez do objeto COM.Isso é feito com o utilitário tlbimp, por exemplo:

tlbimp ..\Libraries\VBLib.dll /out:..\Libraries\Interop.VBLib.dll

Executar esse comando no seu sistema de desenvolvimento e, em seguida, remova a referência para VB6Lib.dll e adicione uma referência para Interop.VBLib.dll.Em seguida, você pode adicionar o tlbimp de comando como um pré-criar um evento no projecto de referência para que o assembly de interoperabilidade é sempre criar a partir da versão correta, e você nunca mais vai precisar para ter o seu COM objecto registado no sistema de compilação.

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