От работы над конверсией для моей компании CAD / CAM приложения. Я не рекомендую идти снизу вверх, т.е. заменять основную DLL или добавлять основные функции через .NET.
У меня были намного лучшие результаты, работая сверху вниз, начиная с замены форм и заканчивая Core DLL.
Самым большим препятствием было предоставление подходящего принтера и графического интерфейса. Но выпуск Microsoft комплекта совместимости принтеров решил обе проблемы. К счастью, когда .NET был лишь проблеском на горизонте, я поместил все ориентированные на VB6 графические и печатные вызовы за интерфейс.
Снова начните с замены формата на сборку .NET, вызывающую ваши основные библиотеки COMM.
Если ваша логика переплетена с формами, я настоятельно рекомендую разделить ее на новую COM DLL В ВИЗУАЛЬНОЙ ОСНОВНОЙ ШЕСТИ. Пусть новая DLL взаимодействует с формой через интерфейс. Форма будет тонкой оболочкой, передающей события в DLL и выполняющей различные операции (рисование, переупорядочение и т. Д.
Если вы не можете избежать использования сборки .NET для предоставления новых функций, создайте серию четко определенных и ограниченных интерфейсов для управления взаимодействием между стороной .NET и стороной VB6 / COM.
Например, мы хотели добавить программное обеспечение для управления офисом / работой для нашей отрасли в ассортимент программного обеспечения, которое мы продаем. Мы решили реализовать с помощью .NET Framework. Он должен был взаимодействовать с нашим программным обеспечением CAD / CAM, поэтому мы создаем серию интерфейсов, каждый из которых может извлекать необходимую информацию или запускать действия друг у друга.
Наконец, если классы .NET реализуют COM-интерфейсы, большая проблема заключается в том, что вам нужно убедиться, что любые параметры, являющиеся частью свойств в COM, должны быть объявлены ByVal, иначе .NET не сможет реализовать свойство и не сможет реализовать интерфейс. Это включает в себя параметр значения Let или Set