Мы разработали программную систему с использованием технологии ActiveX / COM (VB6) от Microsoft. В прошлом году меня все больше интересуют автоматизированные процессы сборки и SCM в целом. Я интенсивно искал в больших частях Интернета информацию о лучших методах работы scm с программными системами на основе COM.
«Проблема» с COM заключается в том, что ссылающийся компонент содержит ссылку с уникальным идентификатором интерфейса. Когда вы перекомпилируете указанный компонент, идентификатор может измениться, и ссылка больше не действительна. Основная проблема заключается в том, что iid компилируется в двоичный файл. Поэтому, когда я не хочу возвращать скомпилированные файлы в систему управления версиями, каждый разработчик должен скомпилировать свои собственные версии и получить другие идентификаторы.
Когда я хочу проверить исходный код на чистой машине сборки для компиляции системы, это просто невозможно, потому что все ссылки недействительны (без двоичных файлов, без идентификаторов интерфейса).
Мне просто интересно, если есть какие-то лучшие практики, как настроить систему автоматической сборки для проектов COM (VB6)?
Edit:
Да, я в курсе настроек совместимости. Но возьмите сценарий, в котором я хочу собрать систему Wohle на чистой машине без каких-либо двоичных файлов.
Когда вы говорите, что проект совместим с двоичным файлом, вы должны указать двоичный файл, с которым проект совместим.
Я думаю, что мне нужно написать собственный инструмент для сборки, который изменяет ссылки и параметры совместимости в файлах проекта до и после компиляции проектов.
Поскольку VB6 / COM является действительно широко распространенной технологией, я просто думал, что должно быть готовое к использованию решение.
Обычно мы компилируем с двоичной совместимостью. Когда мы модифицируем открытый интерфейс компонента, мы компилируем с совместимостью проекта.
Но когда вы меняете интерфейс базового компонента, который используется многими другими компонентами, вы должны вручную изменить все ссылающиеся проекты на совместимость проектов, перекомпилировать их и вернуться к двоичной совместимости.
Это основной процесс, который я хочу автоматизировать.