Сброс совместимости проекта в vb6

когда мы нарушаем совместимость в dll VB6, я должен сделать следующее:

  1. нет бинарной совместимости
  2. перекомпиляция
  3. снова установить совместимость
  4. удалить ссылку на измененную dll из всех проектов, которые ее используют
  5. добавить ссылку на все проекты, которые используют его
  6. перекомпилировать все эти проекты
  7. сделайте то же самое для любых проектов, которые используют эти проекты и т. д.

Of конечно, это немного упрощенно, но любой, кто делал это раньше, должен знать, о чем я говорю.

мой вопрос: вы нашли лучший способ сделать это, или вы нашли какие-либо (не слишком дорогие) инструменты для облегчения этого процесса? Или еще лучше, вы создали тот, который вы можете поделиться со мной:)

обратите внимание, что я спрашиваю, Как сделать этот процесс проще, а не как его избежать. Поэтому, пожалуйста, не давайте ответов о том, насколько плохо нарушать совместимость и что мы не стоит этого делать. Я живу в реальном мире, где есть вещи вне моего контроля, и я просто пытаюсь разобраться с тем, что у меня есть.

5 ответов


в предыдущей работе у меня было огромное приложение VB6, которое содержало десятки DLL VB6, которые мы ссылались на проекты в нашей проектной группе. Мы часто нарушали совместимость, и ручное обновление ссылок, как вы описываете, не было вариантом.

мы изначально разработали инструмент, который будет обновлять ссылки во всех .vbp файлы в папке после взлома и перекомпиляции, но я в конечном итоге нашел визуальную сборку с помощью программного обеспечения Kinook (www.kinook.com) который мог бы иметь дело с этим автоматически.

Я использовал их решения в течение многих лет с успехом. Что хорошего в их действии "Make VB6" (http://www.kinook.com/VisBuildPro/Manual/makevb6.htm) заключается в том, что он может построить дерево зависимостей и перестроить все ваши проекты в вашей группе проектов в правильном порядке, обновляя ссылки соответственно.

для вашего сценария вам нужно будет установить параметр "установить совместимость версий перед построением" на "нет совместимости", а затем проверить Установите флажок "установить двоичную совместимость", чтобы проекты возвращались к двоичной совместимости после построения.

Если у вас есть проекты, для которых вам нужно поддерживать двоичную совместимость, просто оставьте их за пределами .vbg и его не восстановить его.


Дополнительные Образцы Visual Basic 5.0 & 6.0 предлагает Надстройка Бинарной Совместимости это может быть полезно. Вижу ReadMe.txt и Revised Binary Compatibility.doc файлы после "установки" (есть шаги, которые нужно предпринять после запуска загрузки).

эта загрузка включает в себя документ "пересмотренная бинарная совместимость", а также надстройку SyncCompt.файл DLL. Бинарная совместимость, реализованная в Visual Basic 5.0 и Visual Basic 6.0, гарантирует, что новые версии доставка продуктов полностью совместимы с более старыми версиями. Документ объясняет проблемы вокруг двоичной совместимости и GUID версии и вводит DLL. Надстройка DLL создает новый файл совместимости для стабилизации вашего продукта (за исключением стандартных EXE, которые не имеют двоичной совместимости). Этот инструмент работает только в среде Microsoft Windows NT®.

Это может или не может решить вашу проблему.


вам не нужно изменять настройку совместимости. Однако вам необходимо убедиться, что dll (или exe), на которую вы ссылаетесь в настройках совместимости, -не местоположение, в которое вы собираетесь скомпилироваться.

мы делаем что-то подобное, поэтому у нас есть следующая структура:

C:\ProductName\Bin - содержит все живые сборки

C:\ProductName\Bin\Compatibility - содержит все сборки, как они были в последней сборке

после того, как мы делаем сборка (которую мы делаем автоматически, обстреливая VB6.exe) мы перемещаем все в \Bin to \Bin\Compatibility


Я нашел совместимость версий в компонентах ActiveX серия на MSDN очень поучительная по вопросу совместимости и когда/как ее сломать. Я публикую это в основном для дальнейшего использования.


Я решаю проблему, не сохраняя информацию о совместимости.

Я удаляю строку CompatibleEXE32={dllname} из .vbp файлов

Я никогда не спасти .vbp-файлы после сборки, чтобы ссылка не возвращалась.