Posted 18 October 2022, 3:54 pm EST
We have developed a software system using ActiveX/COM (VB6) technology from microsoft. In the last year, i get more and more interested in automated build processes and SCM at a whole. I intensively searched big parts of the web for information about best practices how to do scm with COM based software systems.
The “problem” with COM is, that a referencing component holds the reference by an unique interface id. When you recompile the referenced component, the id may change and the reference isn’t valid any more. The main problem here is, that the iid is compiled into the binary. So when i don’t want to check in the compiled files into version control, every developer has to compile his/her own versions and gets other ids.
When i want to check out the source on a clean build machine to compile the system, its just impossible, because all the references are invalid (no binary files, no interface ids).
Im just wondering, if there are some best practices floating around, how to set up an automated build sytem for COM projects (VB6)?
Edit: Yes, im aware of the compatibility settings. But take the scenario, where i want to build the wohle system on a clean build machine without any binaries. When you say a project is binary compatible you have to provide the binary with which the project is compatible.
I think i have to write a custom build tool, which modifies references and compatibility settings in the project files before and after compiling the projects.
Because VB6 / COM is a really wide spread technology, i was just thinking that there has to be a ready to use solution.
We normally compile with binary compatibility. When we modify the public interface, of a component, we compile with project compatibility. But when you change the interface of a basic component which is used by a lot of other components, you have to manually change all referencing project to project compatibility, recompile them and change back to binary compatibility. Thats the main process i want to automate.