Подтвердить что ты не робот

Как преобразовать код VB6 в С#?

Кто-нибудь знает способ конвертировать из кода VB6 в С#?

Есть ли инструмент, который может сделать это для меня?

4b9b3361

Ответ 1

VisualStudio предлагает (или, по крайней мере, предлагаемый) мастер для преобразования с VB6 на VB.NET(который затем может быть преобразован в С# с небольшой работой, возможно, с помощью #develop VB.NET ↔ С# конвертер), но когда последний раз я использовал его, для чего-то нетривиального, нужно было выполнить большую ручную работу, поэтому я подозреваю, что вы, вероятно, лучше переписываете или портируете вручную, если это большое и/или важное приложение.

Ответ 2

Это может показаться немного нахальным, но ваш мозг может быть лучшим инструментом для использования. Возможно, стоит перезаписать.

Возможно, вам не нужно его портировать. Может ли VB6 быть превращен в COM-компонент? Порт для COM, звоните с С#, домой вовремя для Judge Judy.

Ответ 3

Как человек, который сделал это несколько раз, это непростой процесс. Вы можете использовать инструмент VB6 для VB.Net, как указано в этом ответе, а затем использовать Reflector или SharpDevelop для преобразования в С#. С преобразованием SharpDevelop несколько предостережений. Он закручивает все ссылки на массивы и считает, что они являются функциональными вызовами, и все логические операторы преобразуются в побитовые логические операторы (И становится, а не & &). С Reflector вы теряете кучу вещей. Кроме того, конвертер Visual Studio не работает на большом количестве крупных проектов, просто зависает и никогда не завершается.

Как только вы превратили свой код в С#, вам нужно начать настоящую работу. Конверсия дает вам в лучшем случае 50% пути, вам нужно исправить массу вещей (вы увидите, что ваш код завален TODO), реорганизуйте массу вещей, и в конце вы остаетесь с С#, который является представление вашего VB6 - если у вас нет очень хорошего кода VB6, это не место, которое вы действительно хотите. Кроме того, весь ваш код будет усеян помощниками VB, а не с использованием надлежащих функций DotNet (все строковые функции являются помощниками, а не объектами класса, для примеров 0. Если вы использовали Variant, все они должны быть переписаны. много вызовов API, они, как правило, нуждаются в перезаписи.

В итоге вы получите базу, но преобразование большого проекта (20-30 форм, 30 классов, 30 модулей) может занять несколько человеко-месяцев. Однако перезапись с нуля может занять вдвое больше времени, и вы потеряете всю свою бизнес-логику. Таким образом, это можно сделать (я сделал это с 3 или 4 крупными проектами), но нет панацеи, нет серебряной пули, и любой инструмент, который говорит, что он сделает это для вас один, лжет.

Ответ 4

Откройте свой проект с новой версией Visual Studio, конвертируйте свой код в VB.Net, а затем загрузите .NET Reflector, чтобы помочь вам с преобразование С#.

Удачи!

Ответ 5

Artinsoft (теперь переименовано в Mobilize.Net) делает именно это, особенно помощник по обновлению Visual Basic.

Однако даже после использования VBUC все еще есть некоторые части системы, которые необходимо перенести/проверить вручную. Но обычно это намного меньший набор исходной проблемы. И некоторые проблемы миграции были устранены благодаря опыту прошлых миграций.

Artinsoft - это та же компания, которая построила мастер, который поставляется с Visual Studio, упомянутый в сообщении theraccoonbear. Однако, если я не ошибаюсь, мастер переносит только VB6 на VB.Net.

Полное раскрытие: я работаю для Artinsoft

Ответ 6

Короткий ответ заключается в том, что VB6 и VB.NET(и, следовательно, С#) - это отдельный язык, но родственные языки. Есть много тонких (Integer, являющихся Int32 вместо Int16) и грубыми различиями (графикой, формой и механизмами печати) между двумя платформами. Вам нужно относиться к этому так, как если бы вы переходили на совершенно другую платформу.

Вопросы более подробно рассматриваются здесь.

Как переключить большое приложение с VB6 на VB.NET

Ответ 8

Корпорация Майкрософт рекомендует ArtinSofts Visual Basic Upgrade Companion (VBUC).

Microsoft и ArtinSoft сотрудничают, чтобы предоставить вам бесплатную лицензию VBUC. Код скидки ниже можно использовать для покупки лицензии, которая позволит вам бесплатно переносить приложение до 10 000 строк кода VB6 на VB.NET или С#. Он также может применяться при покупке большей лицензии.

Это не идеально, в результате код все еще требует много исправлений вручную, пока он даже не компилируется, но все же этот инструмент стоит сделать снимок.

Ответ 9

Один вопрос спросить себя: насколько важно иметь С#, а не VB.NET? Если вы конвертируете большое приложение, возможно, вам стоит просто перейти на VB.NET, что будет дешевле.

В VB6 есть некоторые функции без точного эквивалента в С# (обработка ошибок, поздняя привязка и т.д.). Спросите себя, почему стоит потратить ручное усилие на их преобразование, когда вы можете пойти на VB.NET, который их поддерживает.

И если вы мне не верите (и никто не голосовал за мой ответ, всхлипывая всхлипывание!), возможно, вы поверите Франческо Балена и Dan Appleman (в книге Перемещение на VB.NET), которые согласны со мной.

Ответ 10

В GreatMigrations мы делаем это вручную - мы используем наши руки для разработки компилятора VB6/COM. Компилятор читает VBP (или группу связанных VBP) и ссылается на библиотеки COM и строит "семантическую модель". Эта модель представляет собой чрезвычайно подробный набор таблиц символов и потоков операций, которые полностью и точно описывают все определенные информационные структуры и операции, выполняемые исходной системой.

Затем инструмент применяет ряд алгоритмов, которые изменяют и реструктурируют модель, чтобы сделать ее более совместимой с .NET и, при необходимости, применяют пользовательские преобразования; например, для замены компонентов COM классами .NET. Правила преобразования разработаны людьми и созданы "вручную" для удовлетворения их уникальных требований.

Наконец, модель "выполнена", но вместо распределения модели данных и выполнения операций мы создаем файловые структуры, модель данных и операции в нотации целевой платформы. Мы можем использовать как VB.NET, так и С#, используя этот подход. Мы также используем этот процесс для переноса сайтов ASP в ASPX (у нас также есть продукт с множеством диалектов FORTRAN-to-C)

С первой попытки подход не создает готовое программное обеспечение для производства, но его можно улучшить и сделать для создания "лучшего" программного обеспечения путем изменения конфигурации инструмента и повторного запуска процесса перевода. Преимуществом нашего инструмента является его повторяемость, скорость и гибкость, что облегчает гибкую методологию перезаписи с помощью инструмента. ИМО, миграционные группы, которые используют наш подход, получат выгоду от выделения большего количества ресурсов для оценки альтернатив для редизайна и улучшения процесса разработки, а не для повторного сбора функциональных требований, ручного кодирования и тестирования. В конечном итоге они получат более удобную систему и гораздо более точное воспроизведение исходных функциональных возможностей приложения после миграции, а также более высокий контроль и видимость во время миграции.

Пробная версия нашего инструмента доступна здесь gmStudio Trail Request Download. Это позволит вам экспериментировать с кодами ASP/VB до 10K LOC и работает до 30 сеансов.