Vb6 active dll создает новую библиотеку типов (GUID) - PullRequest
0 голосов
/ 27 июня 2018

Я исправил проблему в одном из компонентов VB6, и как часть этого мне пришлось скомпилировать один из элементов управления зависимостями, который я не изменил ни в одном коде. Проблема здесь заключается в том, что GUID DLL-файла зависимости ActiveX изменяется на новый GUID, когда я компилирую DLL-файл ActiveX зависимости. компонент, где я изменил код, не изменил GUID. Почему я вижу такое поведение?

1 Ответ

0 голосов
/ 27 июня 2018

Из руководства по концепциям Visual Basic 6, " Совместимость версий для интерфейсов ":

Во время разработки нового компонента Visual Basic генерирует новые IID каждый раз, когда вы компилируете, если на вкладке «Компонент» диалогового окна «Свойства проекта» выбран параметр «Совместимость проекта» или «Нет совместимости». Новые CLSID также генерируются, если не выбрана Совместимость; CLSID сохраняются, если выбрана совместимость проекта. Однако после того, как вы выпустили компонент и начали работать над его расширенной версией, вы можете использовать функцию совместимости двоичных версий Visual Basic, чтобы изменить это поведение.

Как подробно описано в « Совместимость версий » в «Отладке, тестировании и развертывании компонентов», совместимость бинарных версий сохраняет идентификаторы классов и идентификаторы интерфейсов из предыдущих версий вашего компонента. Это позволяет приложениям, скомпилированным с использованием предыдущих версий, работать с новой версией.

По умолчанию VB6 будет каждый раз создавать новый GUID, если вы не укажете ему файл для двоичной совместимости, а затем будет использовать GUID в этом файле, если это возможно. Это может быть странное значение по умолчанию, но именно так оно и работает, и в разделе « Совместимость версий » в документации описаны все детали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...