VB6 - Cómo romper automáticamente la compatibilidad desde la línea de comandos (o msbuild)

StackOverflow https://stackoverflow.com/questions/489475

Pregunta

Estamos implementando Team Build y sabemos que necesitamos escribir scripts de MSBuild para construir nuestra aplicación VB 6 heredada. Está configurado para usar la compatibilidad binaria y rompemos la compatibilidad ocasionalmente y nos gustaría que nuestro nuevo proceso de compilación automatizado pueda romper la compatibilidad automáticamente.

¿Alguien sabe cómo hacer esto o si es posible?

Alternativamente, sé que el corte solo cambia la compatibilidad a Sin compatibilidad, compila, cambia a Binario y vuelve a compilar. Si alguien sabe cómo cambiar la compatibilidad desde la línea de comandos, esto también sería útil.

¿Fue útil?

Solución

Con respecto al cambio de Compatibilidad a Sin compatibilidad, he hecho cosas como esta editando el archivo del proyecto con herramientas de estilo Unix (sed, awk y / o perl). No cambie el archivo de proyecto original, sino que genere un archivo de proyecto nuevo / temporal y compílelo. Aquí hay un ejemplo:

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

Puede utilizar esta técnica para otros fines, como insertar un número de versión en el archivo del proyecto.

Otros consejos

El modificador / d le permite reemplazar los valores de propiedad del proyecto en tiempo de compilación. Probar

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

Esto funciona:

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

No estoy seguro de que ninguna de las soluciones anteriores funcione. Tuvimos los mismos problemas en nuestro producto. Tuvimos que escribir un proyecto vb que (también funcionaba como un complemento) para romper la compatibilidad y construir el proyecto. el proyecto vb, lee el archivo VB existente, genera un nuevo archivo vbp con la configuración de compatibilidad del proyecto y un nuevo destino para el dll generado. el destino sería la misma carpeta donde reside el ref-dll. una vez que se construye el dll, se eliminan los viejos dll y se cambia el nombre del nuevo dll rojo para que coincida con el anterior. al final, se eliminarán todos los archivos temporales. El proyecto vb tiene una función expuesta que toma un parámetro que es el archivo vbp. esto podría ejecutarse desde un script vb. así que esencialmente el argumento de la línea de comando sería

BuildRefDll.vbs <my.vbp>
vb6.exe /make <my.vbp>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top