VB6 - Как автоматически отключить совместимость из командной строки (или msbuild) - PullRequest
3 голосов
/ 29 января 2009

Мы внедряем Team Build и знаем, что нам нужно написать сценарии MSBuild для создания нашего старого приложения VB 6. Он настроен на использование бинарной совместимости, и мы время от времени нарушаем совместимость, и мы хотели бы, чтобы наш новый автоматизированный процесс сборки автоматически нарушал совместимость.

Кто-нибудь знает, как это сделать, или если это вообще возможно?

Кроме того, я знаю, что разрыв просто меняет совместимость на Нет совместимости, компилирует, изменяет двоичный код и перекомпилирует. Если кто-нибудь знает, как просто изменить совместимость из командной строки, это также будет полезно.

Ответы [ 4 ]

2 голосов
/ 29 января 2009

Что касается перехода с совместимости на отсутствие совместимости, я сделал такие вещи, отредактировав файл проекта с помощью инструментов в стиле Unix (sed, awk и / или perl). Не изменяйте исходный файл проекта, вместо этого создайте новый / временный файл проекта и постройте его. Вот пример:

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

Вы можете использовать эту технику для других целей, таких как вставка номера версии в файл проекта.

1 голос
/ 30 апреля 2009

Это работает:

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

1 голос
/ 29 января 2009

Параметр / d позволяет заменять значения свойств проекта во время компиляции. Попробуйте

VB6 /MAKE c:\Some.vbp /outdir c:\somedir\ /d CompatibleMode="0"
0 голосов
/ 13 июля 2010

Я не уверен, что какое-либо из вышеуказанных решений работает. у нас были те же проблемы в нашем продукте. нам пришлось написать проект vb, который (также функционировал как надстройка), чтобы нарушить совместимость и построить проект. проект vb, читает существующий файл VB, генерирует новый файл vbp с настройками совместимости проекта и новым назначением для созданной dll место назначения будет той же папкой, где находится ref-dll. Как только DLL построена, старая DLL удаляется, а новая красная DLL переименовывается в соответствии со старой. в конце все временные файлы будут удалены. В проекте vb есть открытая функция, которая принимает один параметр - файл vbp. это может быть запущено из сценария VB. по сути, аргумент командной строки будет

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