Was just wondering if any of you had some recommendations for Best Practices for managing/releasing several COM servers. (Or any books/articles that cover this) Things like: ========== source-specific * which .h or .idl or .tlbs from the build do you make public? * should I be using CATIDs for the registry? (and if so, how do I put that stuff in the .rgs file?) * are there things to watch out for when releasing new versions of code? (and when should I freeze the interface anyway?) * For most COM server objects, which things are easy to unit-test as part of the build process? compiler+IDE-specific * #defines -- are there any that seem to trip up beginners? (e.g. When I use ATL, & declare _ATL_FREE_THREADED, does it automatically link in the right multithreaded library or do I have to use /MTd or whatever that compiler switch is named, I forget) * are there some common annoyances to watch out for, when using VC++? (e.g. for some reason my Active Project Configuration keeps getting reset to Win32 Unicode Release MinDependency and the compiler complains about not being able to find _main) My "customers" are in-house engineers doing hardware debugging (with my objects useful as tools for this, running on a PC hooked up to the hardware in question). We don't sell PC software here (we do embedded systems) and I am not familiar with some of the practices that are probably old hat for those of you in the software industry.