2008-12-18 13 views
5

En mi lugar de trabajo estoy atascado con Visual Basic 6, pero después de leer la respuesta a "How do I sort arrays using vbscript?" tengo mis esperanzas, que al menos algunas de las características de VB6 que faltan se pueden complementar con las características de .NET. (Diferentes tipos de colecciones, en su mayoría)¿Cuál es la mejor forma de usar clases .NET desde Visual Basic 6?

Parece que, al menos algunas clases .NET están disponibles para secuencias de comandos y se pueden utilizar desde VB6 hasta CreateObject. Pero tengo una sensación distinta de ser bueno, así que ...

  • ¿Hay algún problema que pueda encontrar? (Además de que .NET tiene que estar instalado)
  • ¿Están todas las clases .NET disponibles a través de CreateObject?
  • ¿Hay alguna manera de importar esas clases en mi proyecto VB6, para que pueda tener IntelliSense?
  • ¿Tiene alguna sugerencia general con respecto a este enfoque?

Respuesta

0

Solo debe usar interoperabilidad como mecanismo para enviar datos entre sistemas, no para código de núcleo lógico; el golpe de rendimiento de todos los grupos, etc. será demasiado. Te sugiero que estudies el uso de las variantes de VB más recientes en VS2008, etc. Es un gran cambio, pero si puedes permitirte el cambio, no te arrepentirás.

Personalmente, cuando me mudé de VB6 que me pasa a C#, pero esa decisión tiene que basarse en el contexto local, etc.

+0

Haga clic abajo para ver todo lo que desee, pero el uso de .NET colecciones, etc. como rutina de VB6 * realmente * no es una buena idea. –

2

De trabajando en la conversión de mi aplicación CAD/CAM empresa. No recomiendo ir de abajo hacia arriba, es decir, reemplazar el núcleo DLL o agregar la funcionalidad principal a través de .NET.

Obtuve mejores resultados trabajando de arriba hacia abajo comenzando por reemplazar formularios y trabajando hasta llegar al DLL principal.

El mayor obstáculo fue proporcionar una impresora adecuada e interfaz gráfica. Pero el lanzamiento de Microsoft de un Kit de compatibilidad de la impresora resolvió ambos problemas. Afortunadamente, cuando .NET no era más que un rayo en el horizonte, coloqué todas las llamadas gráficas e impresión céntricas de VB6 detrás de una interfaz.

De nuevo, empiece reemplazando el formato con un ensamblado .NET llamando a las bibliotecas centrales de COMM.

Si su lógica está entrelazada con los formularios, recomiendo separarla en una nueva DLL COM EN VISUAL BASIC SIX. Haga que la nueva DLL interactúe con el Formulario a través de una interfaz. El formulario será un shell delgado pasando eventos a la DLL y ejecutando varias operaciones (dibujo, reordenación, etc.

Si no puede evitar el uso del ensamblado .NET para proporcionar una nueva funcionalidad, cree una serie de y interfaces limitadas para controlar la interacción entre el lado .NET y el lado VB6/COM.

Por ejemplo, queríamos agregar software de administración de trabajos/oficina para nuestra industria a la gama de software que vendemos. el framework .NET.Tuvo que interactuar con nuestro software CAD/CAM y, por lo tanto, creamos una serie de interfaces donde cada uno puede extraer la información necesaria o disparar una acción entre sí.

Finalmente, si las clases de .NET implementan las interfaces COM, lo importante es que debe asegurarse de que los parámetros que son parte de las propiedades en COM deben declararse ByVal o .NET no podrá implementar la propiedad y fallará. para implementar la interfaz. Esto incluye el parámetro de valor de una decepción o Set

1

Tal this es atento:

Mediante el uso de la información disponible muchas de las clases que se encuentran en el MS .NET Mscorlib.dll se han reproducido en Visual Basic 6 . Esto NO es una implementación del tiempo de ejecución de CLI, solo algunas de las clases de unidad que se encuentran en el archivo de biblioteca mscorlib.dll.

Cuestiones relacionadas