trying to get TFS teambuild to build c#>VB6>c# application (ComReference prob?)

半世苍凉 提交于 2019-12-25 05:06:53

问题


I'm trying to get TFS team-build to reliably build a WPF C# app. This app relies on a VB6Lib.dll which we maintain, this VB6Lib.dll itself relies on other C# libs that we also maintain.

I've set up a build definition to build (in order):

  • VbDependencies.sln (all libs in this have com interop set, thus the VB6 can find their TLBs)
  • buildVB6Lib.proj (an msbuild file which calls "VB6.exe /make /d" to make the VBLib.dll on the build server, as part of this script I've been copying the VB6Lib.dll output to C:\tmp)
  • MainApp.sln (in my workspace, I've added a reference to C:\tmp\VB6Lib.dll)

Does this sound ok ? On my dev laptop I usually build the VB6, copy its output to \tmp and then regsvr32 it there before adding a reference to it in my C# solution. It's this step that I'm not convinced my build def is doing.

Also, is there a way to get more useful output from the VB6 build, currently I get "Compile Error in File 'xxx.bas' Can' find project of library", but not which actual library it can't find.

cheers


回答1:


You are correct in that the critical point in your build process on the development system lies in registering the COM object. However, one does not in general want to register the COM object on the build server, as this can cause all kinds of versioning issues and silent failures when the wrong COM object is registered or the registration fails.

The proper way to accomplish this is to generate an interop assembly manually and reference that instead of the COM object. This is accomplished with the tlbimp utility, for instance:

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

Run that command on your development system, then remove the reference to VB6Lib.dll and add a reference to Interop.VBLib.dll. You can then add the tlbimp command as a prebuild event in the referencing project so that the interop assembly is always build from the correct version, and you will never again need to have your COM object registered on the build system.



来源:https://stackoverflow.com/questions/10700607/trying-to-get-tfs-teambuild-to-build-cvb6c-application-comreference-prob

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!