traducir online net convertir convertidor convert codigo c# vb6 porting vb6-migration

online - ¿Cómo puedo convertir el código VB6 a C#?



traducir vb c# (10)

¿Alguien sabe una forma de convertir el código VB6 a C #?

¿Hay alguna herramienta que pueda hacer esto por mí?


VisualStudio ofrece (o al menos se ofrece) un asistente para realizar una conversión de VB6 a VB.NET (que luego podría convertirse a C # con un poco de trabajo, posiblemente ayudado por el convertidor # developer VB.NET <-> C #), pero la última vez que lo usé, para cualquier cosa no trivial hubo que hacer mucho trabajo manual, así que sospecho que probablemente sea mejor reescribir o portar a mano si se trata de una aplicación grande y / o importante.


Abra su proyecto con una nueva versión de Visual Studio, convierta su código a VB.Net y luego descargue .Net Reflector para ayudarlo con la transformación de C #.

¡Buena suerte!



Puede parecer un poco atrevido, pero tu cerebro podría ser la mejor herramienta para usar. Podría valer la pena volver a escribir.

Tal vez no necesites portarlo. ¿Podría el VB6 convertirse en un componente COM? Puerto a COM, llamada desde C #, inicio a tiempo para Judge Judy.


Una pregunta que debes hacerte es: ¿qué tan importante es tener C # en lugar de VB.NET? Si está convirtiendo una aplicación grande, quizás debería simplemente actualizar a VB.NET, que será más económico.

Hay algunas características en VB6 sin equivalente exacto en C # (el manejo de errores, el enlace tardío, etc.). Pregúntese por qué vale la pena el esfuerzo manual para convertir esos, cuando podría ir a VB.NET, que los admite.

Y si no me crees (y nadie ha votado mi respuesta, lloro sollozo) tal vez creas a Francesco Balena y Dan Appleman (en un libro Moving to VB.NET ) que están de acuerdo conmigo.


En GreatMigrations, hacemos esto a mano: usamos nuestras manos para desarrollar un compilador VB6 / COM. El compilador lee un VBP (o grupo de VBP relacionados) y hace referencia a las bibliotecas COM y construye un "modelo semántico". Este modelo es un conjunto extremadamente detallado de tablas de símbolos y secuencias de códigos de operación que describen de manera completa y precisa todas las estructuras de información definidas y las operaciones realizadas por el sistema fuente.

Luego, la herramienta aplica una serie de algoritmos que modifican y reestructuran el modelo para hacerlo más compatible con .NET y, opcionalmente, aplica transformaciones personalizadas; por ejemplo, para reemplazar componentes COM con clases .NET. Las reglas de transformación están diseñadas por personas y creadas "a mano" para cumplir con sus requisitos únicos.

Finalmente, el modelo se "ejecuta", pero en lugar de asignar el modelo de datos y ejecutar las operaciones, creamos las estructuras de archivos, el modelo de datos y las operaciones en la notación de la plataforma de destino. Podemos autorizar tanto VB.NET como C # utilizando este enfoque. También usamos este proceso para migrar sitios ASP a ASPX, (también tenemos un producto FORTRAN-to-C multi-dialecto)

El enfoque no produce software listo para producción en el primer intento, pero puede mejorarse y realizarse para producir un "mejor" software al modificar la configuración de la herramienta y volver a ejecutar el proceso de traducción. La ventaja de nuestra herramienta es su repetibilidad, velocidad y flexibilidad, lo que facilita una metodología ágil de reescritura asistida por herramientas. OMI, los equipos de migración que aprovechan nuestro enfoque se beneficiarán al asignar muchos más recursos para evaluar alternativas para el rediseño y las mejoras del proceso de desarrollo en lugar de volver a reunir los requisitos funcionales, la codificación manual y las pruebas. En última instancia, disfrutarán de un sistema más sostenible y una reproducción mucho más fiel de la funcionalidad de la aplicación original después de la migración, así como un mayor control y visibilidad durante la migración.

Una edición de prueba de nuestra herramienta está disponible aquí gmStudio Trail Request Download . Le permitirá experimentar con códigos ASP / VB hasta 10K LOC y ejecutar hasta 30 sesiones.


Microsoft recomienda el Visual Basic Upgrade Companion (VBUC) de ArtinSoft .

Microsoft y ArtinSoft se han asociado para ofrecerle una licencia VBUC gratuita. El siguiente código de descuento se puede usar para comprar una licencia que le permitirá migrar una aplicación de hasta 10,000 líneas de código VB6 a VB.NET o C # gratis. También se puede aplicar al comprar una licencia más grande.

No es perfecto, el código resultante aún requiere muchas correcciones manuales hasta que se compila, pero aún así esta herramienta vale la pena intentarlo.


Artinsoft (ahora renombrado a Mobilize.Net ) hace justamente esto, específicamente el Visual Basic Upgrade Companion .

Sin embargo, incluso después de usar el VBUC, todavía hay partes del sistema que deben migrarse / corregirse a mano. Pero generalmente es un conjunto mucho más pequeño del problema original. Y algunos de los problemas de migración se han resuelto gracias a la experiencia con migraciones anteriores.

Artinsoft es la misma compañía que creó el asistente que se incluye con Visual Studio, mencionado en la publicación de theraccoonbear. Sin embargo, si no me equivoco, el asistente solo migra VB6 a VB.Net.

Divulgación completa: trabajo para Artinsoft


Como alguien que ha hecho esto un montón de veces, este no es un proceso fácil. Puede usar la herramienta VB6 a VB.Net como se indica en esta respuesta , y luego usar Reflector o SharpDevelop para convertir a C #. Con la conversión de SharpDevelop, algunas advertencias. Atornilla todas las referencias de matriz y piensa que son llamadas de función, y todos los operadores lógicos se convierten en operadores lógicos de bit (Y se convierte en & no &&). Con Reflector pierdes un montón de cosas. Además, el convertidor de Visual Studio falla en muchos proyectos grandes, simplemente se cuelga y nunca termina.

Una vez que haya convertido su código en C #, debe comenzar el trabajo real. La conversión te lleva al 50% del camino, tienes que arreglar un montón de cosas (verás tu código lleno de TODO), refactorizar un montón de cosas, y al final te queda C # que es un Representación de su VB6: a menos que tenga un código VB6 muy agradable, no es un lugar en el que realmente desea estar. Además, todo su código debe estar repleto de los ayudantes de VB en lugar de usar funciones DotNet adecuadas (todas las funciones de cadena son ayudantes en lugar de objetos de clase, por ejemplo0. Si utilizó variantes en absoluto, todas deben ser reescritas. muchas llamadas API, tienden a necesitar una reescritura.

Al final obtendrá una base, pero la conversión de un proyecto grande (20-30 formularios, 30 clases, 30 módulos) puede llevar varios meses. Sin embargo, reescribir desde cero puede tomar el doble de tiempo y perderá toda su lógica comercial. Entonces, se puede hacer (lo he hecho con 3 o 4 proyectos grandes), pero no existe una panacea, no hay una bala de plata, y cualquier herramienta que diga que lo hará por ti solo, está mintiendo.


La respuesta corta es que VB6 y VB.NET (y consecuentemente C #) son idiomas separados pero relacionados. Hay muchas diferencias sutiles (el entero es Int32 en lugar de Int16) y las diferencias groseras (gráficos, formularios y motores de impresión) entre las dos plataformas. Debe tratar esto como si estuviera convirtiendo a una plataforma completamente diferente.

Los problemas se exploran más completamente aquí

Cómo cambiar una aplicación grande de VB6 a VB.NET