tinjaw I don't know how yr situation applies 2 the original question, but going on the original issue of linking to a CAD program that frequently breaks binary compatibility & forcing a recompile...
Why not use late binding instead?
In that situation what I would try is 2 create the project as normal, linking to type libraries & such so that you get the full benefit of intellisense.
When everything is working, change yr strongly typed references to the 3rd party library with Variants or Objects.
Also replace all uses of the NEW operator with CreateObject & remove the project references to those controls or dlls.
You only need to do this for 3rd party objects that might break binary compatibilty.
Also keep in mind the Add Components dialog which has a checkbox to "REMOVE INFO ABOUT UNUSED ACTIVEX CONTROLS" - you may need to check/uncheck that (I forget which
If you take this scripting-like approach, binary compatibility should not be an issue.
However you're still gonna have some apps which change the structure of their exposed objects but that would always be a recompile...