Вы можете сделать это с помощью COM-взаимодействия, если ваш собственный исполняемый файл способен использовать COM-объекты. Если вы зарегистрируете свою сборку .NET для взаимодействия, то ваш собственный исполняемый файл может использовать ваши классы .NET точно так же, как «обычные» COM-объекты, и при создании первого он будет ускорять CLR внутри собственного процесса. Аналогично, если вы можете предоставлять COM-объекты из собственного исполняемого файла, вы можете использовать их из своего кода .NET, если создаете сборку взаимодействия (или даже без библиотеки типов, если вы используете только IDispatch).
Основы просты, но я просто выцарапываю поверхность - для такого серьезного проекта, как этот, вам нужен серьезный справочник. Я очень рекомендую .NET и COM, Полное руководство по взаимодействию от Адама Натана. Это большая книга, которая не оставляет много недосказанного, и в ней также есть много полезной информации о том, как правильно создавать классы .NET и COM. В нем также объясняется, как разместить CLR непосредственно в собственном приложении, но этот вариант может оказаться непрактичным без доступа к исходному коду. Я определенно начал бы с COM-маршрута взаимодействия и только размещал CLR изначально, если у вас нет другого выбора.