VB6-如何自动断开与命令行(或msbuild)的兼容性

VB6-如何自动断开与命令行(或msbuild)的兼容性,vb6,msbuild,compatibility,tfsbuild,Vb6,Msbuild,Compatibility,Tfsbuild,我们正在实现团队构建,并且知道我们需要编写MSBuild脚本来构建遗留的VB6应用程序。它被配置为使用二进制兼容性,我们偶尔会破坏兼容性,我们希望新的自动构建过程能够自动破坏兼容性 有人知道怎么做,或者有可能吗 或者,我知道中断只是将兼容性更改为不兼容、编译、更改为二进制和重新编译。如果有人知道如何从命令行更改兼容性,这也会很有帮助。关于从兼容更改为不兼容,我使用Unix风格的工具(sed、awk和/或perl)编辑项目文件,完成了类似的操作。不要更改原始项目文件,而是生成一个新的/临时项目文件

我们正在实现团队构建,并且知道我们需要编写MSBuild脚本来构建遗留的VB6应用程序。它被配置为使用二进制兼容性,我们偶尔会破坏兼容性,我们希望新的自动构建过程能够自动破坏兼容性

有人知道怎么做,或者有可能吗


或者,我知道中断只是将兼容性更改为不兼容、编译、更改为二进制和重新编译。如果有人知道如何从命令行更改兼容性,这也会很有帮助。

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

sed -e "s/CompatibleMode=0/CompatibleMode=2" <myProj.vbp >tmpProj.vbp
sed-e“s/CompatibleMode=0/CompatibleMode=2”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将被删除,新的红色dll将被重命名以匹配旧dll。最后,所有临时文件都将被删除。vb项目有一个公开的函数,该函数接受一个参数,即vbp文件。这可以从vb脚本运行。因此,从本质上讲,命令行参数是

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

Hmm。。。你确定这个技巧适用于VB6.0(和DLL)吗?帮助文档说/d用于定义编译常量。我仍然试图使用它,但它根本不起作用!:-(