1/2 Да и 1/2 Нет. Полная 100% -ная работа будет довольно трудным преобразованием, поскольку предположения VB6 построены на COM. Предположения COM не совпадают с .NET. Где вы действительно столкнетесь с проблемой, будет эмулировать VB6 IDE.
Гораздо проще написать компилятор, совместимый с текстом Vb6. Важно помнить, что вы можете писать сборки, которые могут адаптировать определенные функции VB6 к .NET. Например, объект принтера, графический объект vb6. Доступ к файлу и т. Д. И т. Д. Также существует проблема с форматом Wonky Form, и вам потребуется конвертер для файла FRX. У вас все еще будут проблемы с поведением, но теоретически вы можете минимизировать это в библиотеках поддержки VB6.
Ничто не мешало Microsoft сделать это. Это было высокомерие оригинальной команды .NET, которое привело к тому, что они должны были «исправить» VB6. Да, как язык VB.NET имеет много интересных функций по сравнению с VB6. Но тогда у VB6 было много интересных функций по сравнению с QuickBASIC. Но с VB6 я могу взять код QuickBASIC и выгрузить его в VB6 и иметь разумный шанс заставить его работать. Особенно для модулей, где нет ничего, кроме бизнес-логики. Это не то же самое, что переход от VB6 к VB.NET. Большинство проблем вызвано изменением целого числа с 16 бит на 32 бит.
Потеря даже минимальной обратной совместимости была и остается проблемой. По мере того, как Ruby, Python и другие языки переносились на .NET, произвольный характер вариантов, предложенных исходной командой VB.NET.
Наилучшим решением на данный момент является, вероятно, минимальный подход. Теперь, когда у нас было несколько лет опыта работы с VB.NET, наиболее проблемные области хорошо известны.
Некоторые с макушки головы
1) Введите оператор OPTION INT BASE. По умолчанию целые числа будут 32-битными, а long - 64-битными. Однако, если вы используете OPTION INT BASE 16. Тогда Integer будет компилироваться в Int16, а Longs будет компилироваться в Int32. Это потребует также некоторых модификаций Intellisense. Поэтому, когда он запрашивает мета, в подсказке указывается правильный тип базы. Поймите, что в метаданных все есть Int16s и Int32s.
2) Иметь надежные сборки принтера, экрана и графического помощника vb6. У Microsoft есть 3/4 реализации объекта Printer. Там находится объект Vb6 Graphis, который можно извлечь с помощью рефлектора .NET и использовать отдельно. Но есть много работы по подгонке и отделке, которые необходимо сделать.
3) У опции есть возможность использовать оригинальные ключевые слова VB6, использующие эти вспомогательные сборки. Компилятор преобразует их в вызовы вспомогательной сборки.
Существуют и другие проблемы с доступом к базе данных и другими различными областями. Многое из этого можно решить, расширив опцию и ключевые слова, которые VB.NET.
Конечно, сейчас в сообществе Microsoft Basic есть большой разрыв. Ожидайте много статических и жалоб, если эти опции будут добавлены. Возможно, если бы я был менеджером VB.NET, я бы преобразовал компилятор VB.NET в компилятор VB6.NET, чтобы минимизировать это. Это зависит от того, повлияет ли этот параметр на текущую версию VB.NET.
Подробнее о проблемах можно прочитать здесь .