Índice de la sección dedicada a .NET (en el Guille)

WebForm para convertir código de Visual Basic .NET a C#
 

Publicado el 20/Nov/2002
Actualizado el 21/Jun/2007

 

Nota:
Con fecha 21 de Junio 2007, he publicado una nueva página de conversión de Visual Basic .NET a C#, te recomiendo que la uses en vez de la versión antigua.

Nota del 21/Jun/2007:
Usa la nueva versión de la conversión de Visual Basic .NET a C#
.

Nota del 14/Jun/2007:
Te recomiendo esta utilidad de conversión con VB a C# y C# a VB

También puedes convertir de C# a Visual Basic desde esta pagina Web


Nota del 11/Mar/2006:

Sigue este link si quieres la versión de escritorio de esta utilidad.

Nota del 31/Ago/2005:
Revisada la DLL conversora que ahora tiene en cuenta algunos fallos de los tipos genéricos en bucles For Each.
Solucionado un problema de compatibilidad de versiones de DLLs, que hacía que fallara el conversor en la página Web, (gracias a martindelval por el aviso).


Nota del 24/Jun/2005:
Revisado para usar la última actualización de la DLL "conversora" que tengo actualmente.

10/Jun/2004:
Compilado con el Visual Studio .NET 2003 y se mejora la conversión, además de que convierte los tipos genéricos del .NET Framework 2.0

Nota 26/Dic/2003:
Ahora la página utiliza el componente compilado. Antes se cargaba el código con la propia página.

Esta página funciona tanto en elGuille.info como en MundoProgramacion.


Aquí tienes una utilidad para convertir código de Visual Basic .NET en C#

Sigue este link para mostrar la página con el Web Form.

Nota:
Cuando se muestre el formulario, verás que se incluye un código de prueba, es sólo para eso, para probar.

Si quieres convertir código, lo pegas en la caja de texto y pulsa en el botón "Convertir", te mostrará (si no se queda colgado, espero que no...), el código en C#.

De todas formas, dale algo de tiempo, ya que en códigos grandes puede tardar un poco...

Para convertir otro trozo de código puedes pulsar en el botón "Limpiar".

En la revisiones del 10 de Dic y posteriores, los comentarios se eliminan del código antes de convertirlo, (salvo que se quite la marca del CheckBox que está junto al botón Convertir), en la versión "desktop" se mantienen esos comentarios.

Lo que si te aclaro es que si escribes código directamente hazlo con las mayúsculas/minúsculas y espacios que el IDE de Visual Studio .NET utiliza, sobre todo para las instrucciones, ya que la utilidad de conversión distingue entre las mayúsculas y minúsculas, por ejemplo: If i = 4 Then sería correcto, pero if i = 4 then, no lo entendería.

 

No es un servicio Web, (la primera intención fue esa), es un formulario Web (ASP.NET) que utiliza una librería compilada (antes el Formulario Web incluía TODO el código dentro...)

Por ahora sólo está el WebForm, no está el código que se encarga de hacer la conversión, eso lo publicaré cuando esté más depurado, ya que por ahora lo único que he querido hacer es probarlo para usarlo desde una página Web y así poder ponerlo a tu disposición, sobre todo para que pruebes y me digas los BUGs que encuentres... me refiero a que cosas no convierte de forma correcta.

Sé que no es una utilidad perfecta, ya que aún tengo que depurarla "un poquillo", pero por ahora convierte casi todo el código "normal" de forma bastante satisfactoria.
Faltan muchos detalles, pero eso tendré que ir descubriéndolos poco a poco y si es posible con tu ayuda, mejor que mejor.

Aquí te enumero las cosas que tengo en mi lista de tareas, para que no te sorprendas si no lo hace bien.

Lo que aún no sabe convertir: (algunas de las cosas que me acuerdo...)

-No convierte bien las variables declaradas Static, si hay más de una variable.
-Los ReDim que en la misma línea haya más de una variable no lo hace bien...
-No convierte los procedimientos con parámetros opcionales.
-Cambiar las declaraciones de variables por declaraciones con null, para que las variables tengan un valor inicial.
-Los bucles foreach los convierte bien, pero deja la declaración que hubiese fuera del bucle.
-No convierte todas las funciones propias de VB.
-No añade las importaciones de espacios de nombres que no estén expresamente declarados.
-No añade los () finales de las llamadas a funciones que no lo incluyan (salvo ToString, TrimNNN, ToLower, ToUpper)
-Realmente no convierte bien cuando se escribe en una sola línea, salvo las declaraciones y los If, entre otras cosas, porque no es recomendable escribir de esa forma... (je, je, me tendré que excusar de alguna forma)
 

Lo que se supone que sabe convertir:

-Los eventos de los controles del formulario.
-Ahora conoce más métodos que acaban con ()
-Mejorado el tema de los arrays, incluso reconoce las colecciones (algunas) que deben usarse como arrays.
-Convierte los RaiseEvent
-Convierte las declaraciones de los eventos (con y sin delegados).
-Convierte las instrucciones AddHandler y RemoveHandler.
-Convierte los métodos y tipos genéricos (del .NET Framework 2.0)
-Convierte los Module en clase con los miembros static
-Convierte TypeOf xxx Is yyy
-Convierte los GetType
-Elimina los Implements en los procedimientos
-Las definiciones de atributos, al menos las que acaban con > _
-Las declaraciones de las interfaces, antes no cambiaba bien las definiciones de las propiedades.
-Las declaraciones de los constructores de las clases.
-Las llamadas al constructor de la clase base.
-Convierte (a medias) los #Const y aunque hay que revisarlas, convierte los #If, #Else, etc.
-Convierte las variables estáticas declaradas en los procedimientos (con Static).
-
-Funciones propias de VB como: Now, Year, Month, Day, Hour, Minute, Second, Format, StrComp, ChDir, ChDrive, CurDir, Rnd, Randomize (la quita), Fix, Int, Hex, Oct, Str
-Val (para convertir esta función he tenido que hacer virguerías.
-Los signos !, %, # y @ en los números, ya que el diseñador de formularios del VB indica que la fuente por defecto es  8.25!
-Mejorado el cambio de CType (no se cambiaban los que estaban anidados).
-Los MsgBox y las constantes, aunque no está "depurado".
-Creo que ya convierte bien los For escritos en una sola línea separada por dos puntos.
-Convierte los With, incluso si están anidados.
-Convierte los Redim y Redim Preserve (con excepciones, ver arriba).
-Las declaraciones de variables e incluso arrays, esto último me ha dado algunos quebraderos de cabeza.
-Los procedimientos: Sub, Function y Property.
-Los bucles For, ForEach, While, Do While, Do Until, Loop While, Loop Until.
-Los "casts" de tipos (CType).
-Las conversiones del tipo CInt, CDec, etc. usando Convert.ToInt, etc.
-Los Select Case.
-Los If / Then / Else en bloque o en una misma línea.
-Los comentarios.
-Los Try / Catch / Finally.
-Los bloques Get y Set de las propiedades.
-Las propiedades por defecto las convierte en indizadores (¡vaya palabrita!)
-Los constructores de las clases.
-Las importaciones de los espacios de nombres, si están declarados.
-Convierte correctamente los Or, And, OrElse, AndAlso, Not, XOr
-Sabe que en la próxima versión de VB se podrán declarar variables con los bucles For y For Each.

Y seguramente otras cosillas, pero aunque esto que ya sabe hacer te parezca poco... es mucho, te puedo asegurar que la conversión que hace es bastante buena y los cambios que tendrás que realizar son mínimos... ¡espero!
 

Si encuentras cosas que no convierte, mándame un email con un asunto que diga: Sobre_VB2CS. (a mensaje @ elguille.info).
Así como algunas de las que se supone que sabe convertir, si no lo hace correctamente me lo dices.
Si me mandas el ejemplo de lo que no convierte bien, (sólo la parte que no convierte), mejor... que tampoco he comprobado todas las posibilidades, ya que eso sería prácticamente imposible.

Por favor indica también la fecha de la última actualización, (se muestra después de la caja de texto del código a convertir), así estaré más seguro de que lo que me dices aún no lo he tenido en cuenta o es algo que se suponía que ya sabía convertir.

Gracias.

Nos vemos.
Guillermo


la Luna del Guille o... el Guille que está en la Luna... tanto monta...