VB6 - 如何从命令行(或msbuild)自动中断兼容性?

3
我们正在实施团队构建,并且知道我们需要编写MSBuild脚本来构建我们的传统VB 6应用程序。它配置为使用二进制兼容性,我们偶尔会打破兼容性,我们希望我们的新自动化构建过程能够自动打破兼容性。
有人知道如何做到这一点或者是否可能吗?
或者,我知道中断只是将兼容性更改为无兼容性,编译,更改为二进制并重新编译。如果有人知道如何从命令行更改兼容性,这也将有所帮助。
4个回答

2

关于从兼容性更改为非兼容性,我曾通过使用Unix风格的工具(sed、awk和/或perl)编辑项目文件来完成此类操作。不要更改原始项目文件,而是生成一个新的/临时项目文件,并使用该文件进行构建。以下是一个示例:

sed -e "s/CompatibleMode=0/CompatibleMode=2" <myProj.vbp >tmpProj.vbp

您可以使用此技术进行其他目的,例如将版本号插入项目文件中。

1

/d开关允许您在编译时替换项目属性值。请尝试。

VB6 /MAKE c:\Some.vbp /outdir c:\somedir\ /d CompatibleMode="0"

嗯...你确定这个技巧适用于VB 6.0(以及DLL)吗?帮助文档说/d是用于定义编译常量的。我仍然尝试使用它,但完全没有起作用! :-( - Yarik

1

以下代码可行:

VB6 /MAKE c:\Some.vbp /outdir c:\somedir\ /d CompatibleMode="0" CompatibleEXE32=""


0

我不确定以上任何解决方案是否有效。我们的产品也遇到了同样的问题。我们不得不编写一个VB项目(也作为插件),以打破兼容性并构建该项目。VB项目读取现有的VB文件,生成具有项目兼容性设置和生成的dll的新目标的新vbp文件。目标将是与ref-dll所在的相同文件夹。一旦构建了dll,就会删除旧的dll,并将新的red-dll重命名为与旧的匹配。最后,所有临时文件都将被删除。VB项目具有一个公开的函数,它需要一个参数,即vbp文件。这可以从VB脚本运行。因此,基本上命令行参数将是

BuildRefDll.vbs <my.vbp>
vb6.exe /make <my.vbp>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接