2008-12-18 4 views
5

На моем рабочем месте я застрял в Visual Basic 6, но после прочтения ответа на вопрос «How do I sort arrays using vbscript?« У меня есть надежда, что по крайней мере некоторые из недостающих функций VB6 могут быть дополнены функциями .NET. (Различные типы коллекций, в основном)Каков наилучший способ использования .NET-классов из Visual Basic 6?

Кажется, что по меньшей мере некоторые классы .NET доступны для сценариев и могут использоваться с VB6 до CreateObject. Но я получаю отчетливое чувство хорошего, чтобы быть истинным ...

  • Есть ли какие-нибудь подводные камни, с которыми я мог столкнуться? (Кроме того, .NET должен быть установлен)
  • Доступны ли все классы .NET через CreateObject?
  • Есть ли способ импортировать эти классы в проект VB6, поэтому я могу иметь IntelliSense?
  • Есть ли у вас какие-либо общие предложения относительно этого подхода?

ответ

6

Имеется информация о количестве доступных на VB Fusion Developer Center on MSDN. Особый интерес представляют Using the .NET Framework Class Library from Visual Basic 6 и Can I Interest You in 5000 Classes?.

Для использования методов, описанных в статьях, необходимо написать код .NET. Если у вас еще нет Visual Studio 2008, вы можете бесплатно скачать Visual Basic 2008 Express.

0

Вы должны использовать interop только как механизм для толкания данных между системами - не для основного логического кода; удар производительности всех маршаллинга и т. д. будет слишком большим. Я предлагаю вам взглянуть на более свежие варианты VB в VS2008 и т. Д. Это большой сдвиг, но если вы можете позволить себе внести изменения, вы не пожалеете об этом.

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

+0

Даун-голос все, что вы хотите, но с использованием коллекций .NET и т. Д., Поскольку процедура из VB6 * действительно * не является хорошей идеей. –

2

От работы преобразования для моей компании CAD/CAM приложений. Я не рекомендую идти снизу вверх, заменяя базовую DLL или добавляя основные функциональные возможности через .NET.

У меня было намного лучшие результаты, работающие сверху вниз, начиная с замены форм и работы в Core DLL.

Самым большим препятствием было обеспечение подходящего принтера и графического интерфейса. Но Microsoft выпустила комплект совместимости с принтером, который решил обе проблемы. К счастью, когда .NET был всего лишь проблеском на горизонте, я поместил все графические и печатные вызовы VB6 за интерфейс.

Снова начните с замены формата на сборку .NET, вызывая ваши основные библиотеки COMM.

Если ваша логика переплетается с формами, я настоятельно рекомендую отделить ее от новой COM DLL IN VISUAL BASIC SIX. Попросите новую DLL взаимодействовать с формой через интерфейс. Форма будет тонкой оболочкой, передающей события в DLL и выполняющей различные операции (рисование, повторная компоновка и т. Д.

Если вы не можете избежать использования сборки .NET для предоставления новой функциональности, то создайте серию четко определенных и ограниченные интерфейсы для управления взаимодействием между стороной .NET и стороной VB6/COM.

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

Наконец, если .NET-классы реализуют COM-интерфейсы, большая проблема заключается в том, что вам необходимо убедиться, что любые параметры, являющиеся частью свойств в COM, должны быть объявлены. ByVal или .NET не смогут реализовать свойство и не выполнить для реализации интерфейса. Это включает в себя параметр ценностный подведенный или Set

1

Может this это полезно:

Используя имеющуюся информацию, многие из классов, найденных в MS .NET mscorlib.dll были воспроизведены в Visual Basic 6 Это НЕ является реализацией среды выполнения CLI, только некоторые из классов unitlity, которые находятся в файле библиотеки mscorlib.dll.

Смежные вопросы