Foros del Web » Programación para mayores de 30 ;) » .NET »

Dudas C# y VB.net

Estas en el tema de Dudas C# y VB.net en el foro de .NET en Foros del Web. Hola a Todos...Necesito modificar una aplicacion y esta en C#, tengo nociones de C pero la verdad estoy super empolvado...siempre he trabajado con vb.net..tengo algunas ...
  #1 (permalink)  
Antiguo 24/06/2015, 22:01
 
Fecha de Ingreso: septiembre-2008
Mensajes: 49
Antigüedad: 15 años, 7 meses
Puntos: 0
Dudas C# y VB.net

Hola a Todos...Necesito modificar una aplicacion y esta en C#, tengo nociones de C pero la verdad estoy super empolvado...siempre he trabajado con vb.net..tengo algunas duda no se si alguien me pueda ayudar a resolverlas:

1.-Tengo una aplicacion hecha en vb.net 2010, y tengo otra hecha en vb.net 2012 con c#, necesito pasar las clases de la primera (vb.net) a la segunda (c#)...la duda es las va a leer sin problemas..hasta donde tengo entendido si las debe de leer, sin tener que modificar nada..pero tengo que meterlas con extension .vb, la clase o con extension .cs...?

2.-Como mando llamar la clases desde C#, es igual q en vb.net..?

como veran ando un poco perdido, voy a tirarme a googlear pero si me pudieran dar una ayuda con estas preguntas se lo agradeceria..gracias de antemano.
  #2 (permalink)  
Antiguo 24/06/2015, 22:26
(Desactivado)
 
Fecha de Ingreso: enero-2015
Mensajes: 393
Antigüedad: 9 años, 3 meses
Puntos: 52
Respuesta: Dudas C# y VB.net

Hola.

Antes que nada te comento que te convendría bastante investigar, aprender y entender un poco más a fondo las herramientas con las que estás trabajando.

En primer lugar, no existe tal cosa como "VB.Net 2010" ni "VB.Net 2012". Si te estás refiriendo a versiones del IDE (Visual Studio), esto no tiene nada que ver con el código ejecutable que generes al compilar ni la compatibilidad o no entre los distintos assemblies (.dll o .exe).

En segundo lugar, tanto VB.Net, como C#, como F#, y varios otros lenguajes que son compatibles con la CLI (Common Language Infrastructure), generan al compilarse lo que se conoce como IL (Intermediate Language). Esto significa que el producto que resulta de compilar estos lenguajes es prácticamente idéntico, con lo cuál la interoperabilidad entre los mismos es del 100% y totalmente transparente para el desarrollador.

El IL se compila dentro de unidades individuales conocidas como assemblies, las assemblies pueden tener "referencias" a otras assemblies.

Dicho esto, el punto que define la posibilidad o no de interoperabilidad entre distintas assemblies de .Net es la versión de .Net Framework contra la que se compilan. Existen varias versiones del .Net Framework desde la 1.1 hasta la 4.5.2 actualmente, y si bien una assembly puede hacer referencia a código de otra assembly de una versión más baja, no puede hacerlo de la misma forma con una assembly de una versión más alta.

Para ejemplificar esto: si tu aplicación hace referencia a .Net 3.5, podes reutilizar las assemblies en una nueva aplicación que use .Net 4.5, pero no podrás reutilizarlas en una aplicación más vieja que use .Net 2.0.

En definitiva, lo que tenés que hacer para reutilizar código es:

1 - Asegurarte de que el código que querés referenciar desde ámbos proyectos sea compatible con las versiones de .Net de los proyectos. Para esto te recomendaría que directamente actualices todos tus proyectos la última versión disponible 4.5.1 o 4.5.2

2 - Poner todo el código reutilizable en una Class Library (biblioteca de clases). Esto hará que al compilar te genere un archivo con extensión .dll en lugar de .exe, que es la forma correcta de crear librerías reutilizables.

3 - Hacer referencia desde ámbos proyectos a esta Class Library que creaste. Esto te va a permitir utilizar los tipos definidos en la Class Library desde ámbos proyectos.

Otra cosa que cabe mencionar es que tenés un par de conceptos bastante equivocados:

1 - una clase es una clase. Una clase no es un archivo .vb, ni .cs, ni nada por el estilo. Una clase es una unidad de compilación que resulta de compilar el código que define la clase y sus miembros, que puede estar definido en N archivos. .Net tiene el concepto de partial class, con lo cuál la relación entre una clase y los archivos de código fuente que la describen no siempre es 1:1.

2 - Un proyecto de Visual Studio soporta solamente 1 lenguaje CLI. Si tu proyecto es de VB.Net, no podés agregarle código C# ni F# en archivos .cs, ni .fs y esperar que compile. Te va a tirar errores de compilación porque el compilador de VB.Net no "entiende" el código fuente en otros lenguajes (esto es totalmente diferente de lo que mencioné antes sobre las assemblies, que no son VB.Net ni C# ni nada, si no que ya están compiladas a IL).
Esto quiere decir que no podés "pasar" los archivos de código fuente de un proyecto a otro, si no que tenés que trabajar de manera prolija y utilizar el método que te describí arriba.

Espero que te sirva.
Saludos.

Última edición por agleiva; 24/06/2015 a las 22:32

Etiquetas: c#
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:29.