Msbuild 试图让TFS teambuild构建c#>;VB6>;c#应用程序(ComReference prob?)
我试图让TFS团队构建可靠地构建WPF C#app。这个应用程序依赖于我们维护的VB6Lib.dll,这个VB6Lib.dll本身也依赖于我们维护的其他C#lib 我已设置要生成的生成定义(按顺序):Msbuild 试图让TFS teambuild构建c#>;VB6>;c#应用程序(ComReference prob?),msbuild,tfsbuild,Msbuild,Tfsbuild,我试图让TFS团队构建可靠地构建WPF C#app。这个应用程序依赖于我们维护的VB6Lib.dll,这个VB6Lib.dll本身也依赖于我们维护的其他C#lib 我已设置要生成的生成定义(按顺序): VbDependencies.sln(此文件中的所有LIB都设置了com互操作,因此VB6可以找到它们的TLB) buildVB6Lib.proj(一个调用“VB6.exe/make/d”在生成服务器上生成VBLib.dll的msbuild文件,作为此脚本的一部分,我一直在将VB6Lib.dll
- VbDependencies.sln(此文件中的所有LIB都设置了com互操作,因此VB6可以找到它们的TLB)
- buildVB6Lib.proj(一个调用“VB6.exe/make/d”在生成服务器上生成VBLib.dll的msbuild文件,作为此脚本的一部分,我一直在将VB6Lib.dll输出复制到C:\tmp)
- MainApp.sln(在我的工作区中,我添加了对C:\tmp\VB6Lib.dll的引用)
干杯您是正确的,在开发系统上构建过程的关键点在于注册COM对象。但是,通常不希望在构建服务器上注册COM对象,因为当注册了错误的COM对象或注册失败时,这可能会导致各种版本控制问题和静默故障 实现这一点的正确方法是手动生成互操作程序集,并引用该程序集而不是COM对象。这是通过tlbimp实用程序实现的,例如:
tlbimp ..\Libraries\VBLib.dll /out:..\Libraries\Interop.VBLib.dll
在开发系统上运行该命令,然后删除对VB6Lib.dll的引用,并添加对Interop.VBLib.dll的引用。然后,您可以将tlbimp命令作为预生成事件添加到引用项目中,以便始终从正确的版本生成互操作程序集,并且您将不再需要在生成系统上注册COM对象。我认为是ComReference字段在my MainApp.sln中不正确?我认为这个问题与:恐怕我对VB6构建过程还不够熟悉,无法回答问题的第二部分。您可能想考虑用一组不同的标签重新发布这个问题。当您在解决方案中引用ActiveX/COM库时,这种互操作与VS生成的互操作不同,这对我来说,在使用托管的TFS时是有用的。