Сброс совместимости проекта в vb6 - PullRequest
8 голосов
/ 18 ноября 2011

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

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

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

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

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

Ответы [ 5 ]

8 голосов
/ 18 ноября 2011

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

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

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

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

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

3 голосов
/ 18 ноября 2011

Дополнительные образцы 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®.

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

1 голос
/ 18 ноября 2011

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

Мы делаем нечто подобноепоэтому мы имеем следующую структуру:

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

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

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

0 голосов
/ 02 апреля 2016

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

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

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

...