Intereting Posts
Как программно получить список сайтов и виртуальных серверов в IIS 7? Как передать символы сляба и других «чувствительных к URL» символов в службу WCF REST? Как создать случайное 10-значное число в C #? Попытка настроить kernel ​​Entity Framework в проекте .Net Standard Math.Pow vs multiply operator (производительность) Entity Framework 4 получает идентификатор первичного ключа для вставленной записи Как сделать приложение, которое может захватывать все нажатия, когда вы нажимаете клавишу Enter, но также и в моем WinForm? Получение autofac для работы с mvc6 beta5 ASP.NET Core API JSON serializersettings для запроса c # наследование родовой коллекции и сериализации Передача DateTimeOffset в виде строки запроса WebAPI Преобразование строки в datetime Использование C # wglCreateContext в C # сбой, но не в управляемом C ++ Как перегрузка является временем компиляции, а переопределение – временем выполнения? Должен ли оператор возврата находиться внутри или снаружи замка?

Перенос приложения VB.NET Winforms на C #

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

Обновление :

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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