Как я могу преобразовать код VB6 в C#? [закрытый]

Вот еще одна идея, которая позволяет вам воздействовать на другие элементы без учета какого-либо конкретного селектора и только с использованием состояния :hover основного элемента.

Для этого я буду полагаться на использование настраиваемых свойств (переменные CSS). Как мы можем прочитать в спецификации :

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

blockquote>

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

Вот пример:

#container {
  width: 200px;
  height: 30px;
  border: 1px solid var(--c);
  --c:red;
}
#container:hover {
  --c:blue;
}
#container > div {
  width: 30px;
  height: 100%;
  background-color: var(--c);
}

Почему это может быть лучше, чем использование специального селектора в сочетании с hover?

Я могу предоставить по крайней мере 2 причины, которые делают этот метод хорошим:

  1. Если у нас есть много вложенных элементов, которые имеют одни и те же стили, это будет избегайте сложного селектора, чтобы нацелить их на зависание. Используя пользовательские свойства, мы просто изменяем значение при зависании родительского элемента.
  2. Пользовательское свойство может использоваться для замены значения любого свойства, а также его частичного значения. Например, мы можем определить настраиваемое свойство для цвета, и мы используем его в пределах border, linear-gradient, background-color, box-shadow и т. Д. Это позволит нам отказаться от всех этих свойств при наведении.

Вот более сложный пример:

.container {
  --c:red;
  width:400px;
  display:flex;
  border:1px solid var(--c);
  justify-content:space-between;
  padding:5px;
  background:linear-gradient(var(--c),var(--c)) 0 50%/100% 3px no-repeat;
}
.box {
  width:30%;
  background:var(--c);
  box-shadow:0px 0px 5px var(--c);
  position:relative;
}
.box:before {
  content:"A";
  display:block;
  width:15px;
  margin:0 auto;
  height:100%;
  color:var(--c);
  background:#fff;
}

/*Hover*/
.container:hover {
  --c:blue;
}

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

35
задан MarkJ 26 March 2009 в 12:34
поделиться

9 ответов

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

27
ответ дан theraccoonbear 27 November 2019 в 06:50
поделиться

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

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

12
ответ дан Derek Smyth 27 November 2019 в 06:50
поделиться

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

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

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

10
ответ дан Community 27 November 2019 в 06:50
поделиться

Откройте свой проект с новой версией Visual Studio, преобразуйте Ваш код в VB.Net и затем загрузите .Net Отражатель для помощи Вам с преобразованием C#.

Удачи!

8
ответ дан Mark Biek 27 November 2019 в 06:50
поделиться

Artinsoft (Теперь переименованный к Мобилизуют. Сеть ), делает просто это, especifically Компаньон Обновления Visual Basic .

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

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

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

8
ответ дан willvv 27 November 2019 в 06:50
поделиться

Существует 2 свободных, которые я использую:

http://www.carlosag.net/Tools/CodeTranslator/

http://www.developerfusion.co.uk/utilities/convertcsharptovb.aspx

3
ответ дан Scott and the Dev Team 27 November 2019 в 06:50
поделиться

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

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

И если Вы не верите мне (и ничей проголосовавший за мой ответ, рыдание рыдания!), возможно, Вы будете верить Francesco Balena и Dan Appleman (в книге , Перемещающейся в VB.NET ), кто соглашается со мной.

2
ответ дан MarkJ 27 November 2019 в 06:50
поделиться

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

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

, Как Переключить Крупное приложение от VB6 до VB.NET

4
ответ дан Community 27 November 2019 в 06:50
поделиться

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

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

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

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

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

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

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

1
ответ дан 27 November 2019 в 06:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: