Если вы хотите использовать пользовательский интерфейс .NET (Windows Forms или, может быть, даже более новый WPF), самый простой подход - создать объектную модель в C ++ / CLI, реализованную в терминах собственного кода, но имеющую. NET интерфейс.
Затем напишите пользовательский интерфейс на C # и вызовите объектную модель C ++ / CLI (которая отличается от использования библиотеки базовых классов .NET только одним способом - вы должны добавить ссылку на сборку C ++ / CLI ... но компилятор C ++ / CLI создаст все метаданные, которые использует C #).