2008-10-07 3 views
31

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

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

+0

Можете ли вы предоставить код? – Inisheer 2008-10-07 17:49:10

+0

Я подозреваю, что там есть какой-то интересный вопрос. Можете ли вы дать нам более подробную информацию? – 2008-10-07 17:49:59

+0

Я собираюсь закрыть это, пожалуйста, откройте вопрос и включите в него соответствующую информацию. – UnkwnTech 2008-10-07 17:54:15

ответ

25

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

8

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

Удачи вам!

8

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

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

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

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

11

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

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

4

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

Вопросы исследуется более подробно здесь

How to Switch a Large App from VB6 to VB.NET

9

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

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

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

1

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

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

И если вы мне не верите (и никто не проголосовал за мой ответ, всхлипывая всхлипывание!), Возможно, вы поверите Francesco Balena и Дэн Эппман (в книге Moving to VB.NET), которые согласны со мной.

1

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

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

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

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

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

3

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

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

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