We have a monolithic MFC GUI app that is nearing the end of it\'s life in C++. We are planning to build new functionality in C# and pass data between each app.
Quest
I would say C++/CLI if you don't have to worry about the .NET framework existing on all the systems the app will run on, and COM otherwise. It would really depend on what you're most comfortable and familiar with, though. I like the existing 'function call' structure of C++/CLI and COM (as opposed to building it with other protocols), but that's just me.
I'm currently using COM to add some .NET component functionality, mainly due to the need to still function with fallbacks if .NET is not present, but that's specific to my needs where maximum deployment is preferable.