如何让TFS Team Build构建c#>vb6>c#应用程序(ComReference Prob?) [英] How do I get TFS teambuild to build c#>VB6>c# application (ComReference prob?)

查看:13
本文介绍了如何让TFS Team Build构建c#>vb6>c#应用程序(ComReference Prob?)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试让TFS Team-Build可靠地构建WPF C#应用程序。此应用程序依赖于我们维护的VB6Lib.dll,此VB6Lib.dll本身依赖于我们也维护的其他C#库。

我已设置要生成的生成定义(按顺序):

  • VbDependencies.sln(此库中的所有库都设置了COM互操作,因此VB6可以找到它们的TLB)
  • BuildVB6Lib.proj(一个msbuild文件,它调用";VB6.exe/make/d";以在构建服务器上创建VBLib.dll,作为此脚本的一部分,我一直将VB6Lib.dll输出复制到C:MP)
  • MainApp.sln(在我的工作区中,我添加了对C:mpVB6Lib.dll的引用)

这听起来可以吗 ? 在我的开发笔记本电脑上,我通常构建VB6,将其输出复制到MP,然后在那里regsvr32,然后在我的C#解决方案中添加对它的引用。我不相信我的构建定义正在执行这一步骤。

还有,有没有办法从VB6版本中获得更有用的输出,目前我在文件‘xxx.bas’中收到编译错误‘xxx.bas’可以找到库的项目,但不能找到它找不到的实际库。

推荐答案

您是正确的,您在开发系统上构建过程的关键点在于注册COM对象。但是,人们通常不希望在生成服务器上注册COM对象,因为当注册了错误的COM对象或注册失败时,这可能会导致各种版本控制问题和静默失败。

完成此操作的正确方法是手动生成互操作程序集并引用该程序集,而不是引用COM对象。这是通过tlbimp实用程序完成的,例如:

tlbimp ..LibrariesVBLib.dll /out:..LibrariesInterop.VBLib.dll
在您的开发系统上运行该命令,然后删除对VB6Lib.dll的引用并添加对Interop.VBLib.dll的引用。然后,您可以将tlbimp命令作为预生成事件添加到引用项目中,以便始终从正确的版本生成互操作程序集,并且您再也不需要在生成系统上注册COM对象。

这篇关于如何让TFS Team Build构建c#>vb6>c#应用程序(ComReference Prob?)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆