2009-05-14 19 views
16

Estoy desarrollando una aplicación basada en GUI en MS Visual Studio 2005, solo quiero saber si es posible usar tanto VB.NET como C# en el mismo proyecto. ¿O puedo incluir un módulo escrito en C# en mi proyecto VB.NET?¿Utiliza VB.NET y C# en la misma aplicación?

Tengo una clase escrita en C# que quiero usar en mi proyecto basado en VB.NET, así que si puedo incluir y llamar funciones de ese proyecto, no tendré que volver a escribir la clase en VB.NET .

Así que por favor ayúdenme como soy nuevo en la programación de .NET.

Respuesta

16

Nunca lo he hecho yo mismo, pero sé que puedes compilar el código C# en un dll y luego cargar y hacer referencia al dll en tu proyecto VB.

De "Calling C# class in VB.net":

creo que el código C# que desea uso debe ser compilado como un archivo DLL. Una vez que se hace , simplemente agregue una referencia a ese proyecto para su proyecto VB.Net , importe el espacio de nombre que necesita , y luego puede usar el código C# .

Véase también How To: Create and Use C# DLLs (de MSDN, para VS2005)

+0

Muchas gracias a Jared por su pronta respuesta ... –

26

sólo quiero saber que es posible el uso tanto de VB y C# en el mismo proyecto.

No, no en el mismo proyecto. Por otro lado, puede usarlos en la misma solución .

O puedo incluir un módulo escrito en C# en mi proyecto de VB.net.

Propongo que cree una solución que contenga dos proyectos: uno en C# que forma una biblioteca que utiliza desde su proyecto de VB. Esto es sencillo, fácil de mantener y fácil de extender.

+0

muchas gracias por su pronta respuesta ... Creo que lo que me han dicho es lo mismo que Jared, pero es más fácil de hacer, así que iré con la solución de Jared ... –

+0

¿Por qué el voto a favor? –

9

También quiere asegurarse de que su código C# cumple con CLS. Esto significa que no expondrá públicamente ninguna funcionalidad que otros lenguajes .NET no comprendan (por ejemplo, ints sin signo, que no existen en VB, o clases diferentes solo por caso), ya que VB no distingue entre mayúsculas y minúsculas). Para hacer esto, debe agregar un atributo para que el compilador genere errores si ha roto cualquiera de las pautas. This article muestra cómo hacer esto:

El CLSCompliantAttribute se puede aplicar a ensamblajes, módulos, tipos y miembros.

Para el marcado de un conjunto entero como compatible con CLS la siguiente sintaxis se utiliza

using System; 
[assembly:CLSCompliant(true)] 

Para el marcado de un método en particular como compatible con CLS la siguiente sintaxis se utiliza

[CLSCompliant(true)] 
public void MyMethod()` 
+1

+1 - Buen punto –

+0

@Martin - A partir de VB8 (2005), VB admite números enteros sin signo. –

+0

Ah, mi error: no soy un programador de VB.Aún así no cumplen con CLS, por lo que el error aún se marcará, aunque supongo que podría ignorarlo en este caso específico. –

0

Si solo estaban planeando usar el módulo en proyectos de Visual Basic, entonces debería considerar convertir el código a Visual Basic. Si necesita usar el módulo en los programas C# y VB.NET, usaría una de las soluciones publicadas anteriormente

Puede intentar algo como * Convert C# to VB.NET. Convierte el código de C# a VB.NET. Uso esta página exclusivamente cuando tengo que convertir algo que encuentro en la red escrito en C#.

3

Ponga el código VB.NET y C# en proyectos separados. (Estoy usando tanto VB.NET como C# en mi proyecto de código abierto, http://msquant.sourceforge.net/, y funciona muy bien).

No necesita preocuparse por las DLL, simplemente haga referencia al proyecto (use la pestaña "Proyecto" en el cuadro de diálogo "Agregar referencia"). P.ej. si necesita usar una función en el código/proyecto C#, agregue una referencia en el proyecto VB.NET al proyecto C#.

2

También debe saber que si usted tiene un proyecto VB.NET con un proyecto C# en la misma solución con uno de ellos con una referencia al otro, aplicar los cambios en el proyecto de referencia sólo va a estar disponible para el otro después de la reconstrucción de la solución. Es como tener una referencia binaria, pero con la capacidad de cambiar el código en la misma solución.

Personalmente, no me gusta esto, pero siempre estoy en una situación en la que modifico el código en el proyecto de referencia y no sé por qué mis cambios no están en el código donde lo uso y me imagino fuera, oohhhh, debo reconstruir.

Para ayuda temporal, podría ser aceptable pero no para programación todos los días.

3

No puede usar un archivo C# y un archivo VB en el mismo proyecto. Sin embargo, puede tener proyectos VB y C# en la misma solución y hacer referencia a ellos.

En el código que puede utilizar:

Imports namespace 

o

using namespace 

vez que la referencia se ha añadido al proyecto apropiado construir la solución y que son buenos para ir.

También puede crear una biblioteca VB.NET en una solución separada, compilarla e importar la DLL en el proyecto C# o viceversa.

Cuestiones relacionadas