Vb6 如何在VisualBasic6.0中进行开发和构建

Vb6 如何在VisualBasic6.0中进行开发和构建,vb6,Vb6,我正在寻找构建多个visual basic项目(所有dll)的最佳实践。我们有多个项目,我们的最终交付成果将是一个dll。现在,一个项目使用两个其他项目,另一个项目引用另一个项目。项目引用vbp文件还是dll?如果它们引用vbp文件,如何构建所有项目 除非您专门从VB外部管理类型库,否则应使用项目引用。如果引用这些文件,并以各种方式修改公共界面,VB将为typelibrary中的各个部分生成新id,这将导致类型不匹配错误 您可以使用“保留兼容性”设置来帮助缓解此问题。确保至少使用项目级别(如果您

我正在寻找构建多个visual basic项目(所有dll)的最佳实践。我们有多个项目,我们的最终交付成果将是一个dll。现在,一个项目使用两个其他项目,另一个项目引用另一个项目。项目引用vbp文件还是dll?如果它们引用vbp文件,如何构建所有项目

除非您专门从VB外部管理类型库,否则应使用项目引用。如果引用这些文件,并以各种方式修改公共界面,VB将为typelibrary中的各个部分生成新id,这将导致类型不匹配错误

您可以使用“保留兼容性”设置来帮助缓解此问题。确保至少使用项目级别(如果您使用COM+,那么您将需要基于已编译版本的dll的二进制文件)

至于编译,您可以编译一个解决方案文件(我甚至很久没有安装Vb6了,但我认为它们是.vbg文件)


早在我们使用的那一天,它还支持编译解决方案文件

您可以从最低级别开始分别编译每个项目,然后逐步向上编译

使用VB6构建的最大问题通常是兼容性问题。最糟糕的情况是兼容性问题,修复程序是这样的

构建A(A是所有其他引用的一个)

将文件复制到兼容目录中

构建引用A的B

将B复制到兼容目录中

构建引用B和A的C

将C复制到兼容目录中

等等

这是因为COM DLL的TypeLib使用INCLUDE来添加它们引用的项目的TypeLib。通过使用Visual Studio 6.0附带的OLE View工具,可以查看VB6 COM DLL的类型Libs

很多时候,添加方法或属性会导致DLL无法编译,因为设置Typelibs的MS方法会使它们不兼容二进制文件。如果二进制兼容性规则允许添加,则此操作失败

90%情况下有效的解决方案是始终将引用的DLL的最新版本放在兼容目录中

一旦你有了一个好的集合,你就可以有一个自动构建器,用它来自动构建项目

请注意,只有当您添加其他DLL引用的内容并且它们需要保持二进制兼容性时,才会出现此问题


您需要一个系统来确保每个人都有一套正确的兼容DLL来构建。

使用VB6几年后,我们的项目往往是这样结构的:

"c:\Program Files\Microsoft Visual Studio\VB98\VB6.EXE" /M .\source\project1\proj1.vbp
"c:\Program Files\Microsoft Visual Studio\VB98\VB6.EXE" /M .\source\project2\proj2.vbp
"c:\Program Files\Microsoft Visual Studio\VB98\VB6.EXE" /M .\source\project3\proj3.vbp
del .\\bin\\*.exp
del .\\bin\\*.lib
在源文件夹下组织的所有项目源(项目和源)

\project\source
\project\source\project1\
\project\source\project2\
...
一个bin文件夹中的所有二进制文件(.dll和.exe)

\project\bin\
将所有.dll设置为二进制,与单箱目录中的结果文件兼容

在初始构建以使二进制兼容稳定之后,每个非破坏性构建都将 可以使用一个简单的命令文件build.cmd来完成,该文件位于源文件夹上方的文件夹中,可能如下所示:

"c:\Program Files\Microsoft Visual Studio\VB98\VB6.EXE" /M .\source\project1\proj1.vbp
"c:\Program Files\Microsoft Visual Studio\VB98\VB6.EXE" /M .\source\project2\proj2.vbp
"c:\Program Files\Microsoft Visual Studio\VB98\VB6.EXE" /M .\source\project3\proj3.vbp
del .\\bin\\*.exp
del .\\bin\\*.lib
构建顺序必须是依赖顺序

每当发生中断性更改时,必须将从属VB项目引用到新的二进制文件

在不破坏更改的情况下,build.cmd通常会完成这项工作