Это сложный вопрос, так как есть много переменных.Предположим, для этого потока, что у вас есть приличное количество разделения проблем и набор COM-DLL с достойной производительностью.
Предполагая вышеизложенное и принимая во внимание ваш пост (тонны кода в компонентах COM)), путь, на который я обычно смотрю, - это сначала переписать пользовательский интерфейс в .NET и использовать оболочки .NET для вызова компонентов COM.Это легко сделать, ссылаясь на компонент COM.Переход к какому-либо собственному методу DLL может помочь, если у вас есть проблема с производительностью после переноса, но это более сложное направление для настройки кода для вызова собственных методов, поэтому я бы не стал сначала идти по этому маршруту.
Вытогда есть два направления, чтобы, возможно, возглавить.Сосредоточьтесь на пользовательских историях (удобстве использования) или на миграции отдельных библиотек (COM DLL >> сборки по одной).Я предпочитаю направление истории, хотя вы потенциально можете получить мертвый код.Вместо того, чтобы думать о миграции, я бы переписывал одну историю за раз, поэтому вы сосредоточены на том, чтобы делать это прямо в .NET.Миграция заканчивается большим количеством COM-кода, написанного на .NET, что очень неприятно.
Я хотел бы найти хотя бы одного эксперта .NET, нанятого в качестве сотрудника или консультанта, так что вы не позволяете старымутечка привычек в плохом коде.Этот эксперт должен быть нанят в первую очередь, чтобы держать вас на правильном пути, а не как другой набор кодировщиков.Не говорите, что человек не может кодировать, но убедитесь, что вы не используете этого человека в качестве теплого тела, так как его основная задача в процессе развития - не дать вам выстрелить себе в ногу.Если вы можете получить этого человека на ранней стадии, подумайте над тем, чтобы нанять кого-то с опытом работы в архитектуре, чтобы помочь в разработке приложения для .NET.Эксперимент стоит дороже, чем проводить рефакторинг позже.
НЕ Пробуйте программы миграции.Они не работают.Вы не только меняете платформу разработки, но и полностью меняете парадигму.Если вы попытаетесь использовать какой-либо автоматизированный инструмент для переноса кода, у вас получится приложение более низкого уровня.
Еще одна вещь.Если вы магазин VB, подумайте о переходе на C #.Это звучит контрпродуктивно, поскольку есть кривая обучения, но придерживаться VB означает, что вы попытаетесь написать VB6 на VB.NET.Конечным результатом является плохая база кода, которую трудно реорганизовать.