我们正在实施 Team Build,并且知道我们需要编写 MSBuild 脚本来构建我们的旧版 VB 6 应用程序。它被配置为使用二进制兼容性,我们偶尔会破坏兼容性,我们希望我们新的自动化构建过程能够自动破坏兼容性。
任何人都知道如何做到这一点,或者甚至可能吗?
或者,我知道中断只是将兼容性更改为不兼容,编译,更改为二进制并重新编译。如果有人知道如何从命令行更改兼容性,这也会有所帮助。
我们正在实施 Team Build,并且知道我们需要编写 MSBuild 脚本来构建我们的旧版 VB 6 应用程序。它被配置为使用二进制兼容性,我们偶尔会破坏兼容性,我们希望我们新的自动化构建过程能够自动破坏兼容性。
任何人都知道如何做到这一点,或者甚至可能吗?
或者,我知道中断只是将兼容性更改为不兼容,编译,更改为二进制并重新编译。如果有人知道如何从命令行更改兼容性,这也会有所帮助。
关于从兼容性更改为不兼容,我通过使用 Unix 风格的工具(sed、awk 和/或 perl)编辑项目文件来完成类似的操作。不要更改原始项目文件,而是生成一个新的/临时项目文件,并使用它进行构建。这是一个例子:
sed -e "s/CompatibleMode=0/CompatibleMode=2" <myProj.vbp >tmpProj.vbp
您可以将此技术用于其他目的,例如将版本号插入项目文件。
/d 开关允许您在编译时替换项目属性值。尝试
VB6 /MAKE c:\Some.vbp /outdir c:\somedir\ /d CompatibleMode="0"
这有效:
VB6 /MAKE c:\Some.vbp /outdir c:\somedir\ /d CompatibleMode="0" CompatibleEXE32=""
我不确定上述任何解决方案是否有效。我们的产品也有同样的问题。我们必须编写一个 vb 项目(也用作插件)来破坏兼容性并构建项目。vb 项目,读取现有的 VB 文件,生成一个新的 vbp 文件,其中包含项目兼容性设置和生成的 dll 的新目标。目标将是 ref-dll 所在的同一文件夹。一旦构建了 dll,旧的 dll 将被删除,新的 red-dll 被重命名以匹配旧的。最后,所有临时文件都将被删除。vb 项目有一个公开的函数,它接受一个参数,即 vbp 文件。这可以从 vb 脚本运行。所以基本上命令行参数是
BuildRefDll.vbs <my.vbp>
vb6.exe /make <my.vbp>