Короткий ответ: VB6 и VB.NET (и, следовательно, C #) - это отдельные, но родственные языки. Между этими двумя платформами есть много тонких (Integer, являющихся Int32 вместо Int16) и грубых различий (графика, форма и механизмы печати). Вы должны относиться к этому, как будто вы переходите на совершенно другую платформу.
Я обнаружил, что различные инструменты миграции не стоят усилий, за исключением некоторых конкретных обстоятельств. Например, интерфейс базы данных с использованием отчетов Crystal.
Что касается стоимости миграции. Только вы и ваша компания могут принимать такие решения. Поддерживайте приложение достаточно долго на ПК, в конце концов, вы должны серьезно рассмотреть его. Главным образом, чтобы воспользоваться преимуществами совершенно новой технологии (например, перейти с DOS на Windows). Мои приложения были запущены в 1985 году, и за их 20-летнюю историю произошло три основных преобразования (рабочая станция в DOS, DOS в Windows 3.X, Windows 3.X в 32-битную Windows и объектно-ориентированная среда).
И мы рассматриваем .NET по нескольким причинам. VB.NET - родственный язык, Generics и Inheritance позволяют сжать большую часть нашего стандартного кода в несколько строк. Более богатый графический API и так далее. Конечно, есть общая головная боль преобразования, взвешивающего все. Однако когда мы переключились на объектно-ориентированную среду, наше приложение превратилось в небольшой EXE-файл, связанный через COM с несколькими DLL. Мы можем позволить себе роскошь конвертировать и тестировать по частям из-за структуры нашего приложения.
Я настоятельно рекомендую, если вы намереваетесь преобразовать свое приложение в VB6 в структуру, которую можно преобразовать и протестировать по частям. Вы сможете использовать Active DLL для этого. Если вы попытаетесь сделать это за один раз, то вы обнаружите, что 80% проекта будет выполнено быстро, а последние 20% будут просто адом. Преобразовав поштучно, вы останетесь с рабочим программным обеспечением на каждом шагу.
Проблемы более подробно рассматриваются здесь
Как переключить большое приложение с VB6 на VB.NET