Портирование приложения VB.NET Winforms на C # - PullRequest
10 голосов
/ 02 декабря 2008

Есть ли «хорошие» ресурсы для переноса приложения winforms VB.NET на C #? Я уверен, что есть программное обеспечение, которое просто переводит код, но я пытаюсь реорганизовать код одновременно. Поддерживать его в его нынешнем виде проблематично, поскольку он использует некоторые методы «плохого проектирования», которые допускает VB.NET, и еще больше усложнит будущее обслуживание. Кто-нибудь здесь прошел через этот процесс, и как вы это сделали? Вы использовали метод перевода / рефакторинга? Вы только что использовали конечный продукт для воссоздания функциональности, не глядя на текущую кодовую базу? Что бы вы (все вместе) порекомендовали?

Обновление

Как я говорил Grauenwolf, сохранение его на его текущем языке представляет следующие проблемы:

  • Невозможно легко добавить функции. VB.NET не является языком, на котором я твердо держусь. Я ценю иронию в изучении языка для его переноса, но в будущем для обслуживания потребуется учесть того, кто не знает VB.NET.
  • Остальная часть приложения была портирована на C # (на самом деле давно); все функции, которые мы хотели бы добавить, зависят от разрыва связи приложения (сейчас оно очень тесно связано). Я выбираю либо рефакторинг на языке, с которым я не очень знаком, либо рефакторинг на понятном мне языке.

Для тех, кто проголосовал за этот вопрос, я не совсем уверен, почему вы сделали; проблема не в том, должен ли я оставить это в VB.NET; проблема заключается в том, каковы будущие издержки, если не переносить их сейчас. Если я собираюсь сэкономить большие средства на его исправлении, почему бы не сделать дополнительный шаг и сделать его обслуживаемым для будущего программиста?

Примечание автора : я давно не смотрел на этот вопрос, недавно был ответ, поэтому я переместил свой «ответ» в вопрос и удалил «ответ» (так как он не был) Это действительно ответ).

Ответы [ 7 ]

16 голосов
/ 02 декабря 2008

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

Нестилистические различия между этими двумя языками очень минимальны, поэтому трудно понять функциональную потребность, которая вызвала бы конверсию. (В Visual Studio 2003 существовала старая ошибка, которая исключала определенные цепочки ссылок на проекты, которые смешивали проекты C # и VB особым образом, но это единственная ошибка, с которой я столкнулся как практическое препятствие.)

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

6 голосов
/ 02 декабря 2008

Если вы используете что-то вроде Reflector или Anakrino, его вывод основан на IL, а не на исходном источнике. Независимо от того, производит ли он код, который лучше, открыт для обсуждения ... Но вы все равно можете попробовать. :)

3 голосов
/ 03 декабря 2008

Сохранение его в его нынешнем виде проблематично, поскольку он использует некоторые методы «плохого проектирования», которые допускает VB.NET, и еще больше усложнит будущее обслуживание.

И вы думаете, что C # не допустит плохой дизайн?

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

2 голосов
/ 03 декабря 2008

В моей работе мы использовали переводчик developerfusion , но ничего не автоматизировали (просто переведите кусок кода или класс и вручную вставьте результат в проект c #).

Reflector - отличный инструмент, но при чтении лямбда-функций вы можете столкнуться с некоторыми проблемами.

Для рефакторинга лучшим инструментом, который мы попробовали, является Refactor Pro .

1 голос
/ 09 декабря 2008

У меня есть опыт работы с VB.NET около 2 лет, но сейчас я использую только C # в своей повседневной разработке. До того, как я попытался использовать VB.Net для C # для преобразования моего кода VB.NET в C #, я узнал об этом, а также из книги.

1 голос
/ 03 декабря 2008

Я использовал C-Sharpener для преобразования в некоторых наших приложениях, но он далек от совершенства. Он преобразовал примерно 95% кода, и я закончил рефакторинг, пока вручную исправлял оставшиеся 5%.

0 голосов
/ 11 августа 2016

Ух ты! Я последний, кто ловит вещи. У меня очень большой код VB.NET в WinForms, и мне было назначено перенести его на C # и WinForms . У меня 0 знаний о VB , но мне нужно было выполнить задачу. Я использовал T elerik Online Code Converter для преобразования всей бизнес-логики VB в C #. Конвертер глупый, и мне представили около 5000 ошибок, в основном путая [] с () , проблемы с параметрами ref и Threading, а также с тем, что нет. Компилятор (VS 2013) даже не смог вычислить все ошибки в одной сборке . Мне пришлось потратить 2 месяца на исправление этих ошибок и создание проекта снова и снова. Я скопировал пользовательский интерфейс WinForms в пользовательский интерфейс C # Winforms - это не было большой проблемой, и теперь я отлаживал оба кода одновременно, чтобы увидеть вывод.

Я хотел бы сказать, что сейчас 4 месяца, и я все еще заканчиваю проект. Мой опыт работы с прикрытием был очень горьким, и я не хотел бы никого рекомендовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...