Mezclando C # y VB en el mismo proyecto

¿Puedes mezclar archivos vb y c # en el mismo proyecto para una biblioteca de clases? ¿Hay alguna configuración que lo hace posible?

Intenté y ninguno de los intellisense funciona correctamente, aunque el comstackdor de fondo parece manejarlo lo suficientemente bien (aparte del hecho de que yo, entonces, tenía 2 clases en el mismo espacio de nombres con el mismo nombre y no me quejé).

Estamos intentando convertir de VB a C #, pero no hemos terminado de convertir todo el código. Tengo un nuevo código que necesito escribir, pero realmente no quería hacer un nuevo proyecto solo para él.

No, no puedes. Un ensamblaje / proyecto (cada proyecto se comstack para 1 ensamblaje generalmente) tiene que ser un idioma. Sin embargo, puede usar varios ensamblajes, y cada uno se puede codificar en un idioma diferente, ya que todos se comstackn en MSIL.

Compiló bien y no se quejó porque un proyecto de VB.NET solo comstackrá los archivos .vb y un proyecto de C # solo comstackrá realmente los archivos .cs. Estaba ignorando a los demás, por lo tanto, no recibió errores.

Editar: si agrega un archivo .vb a un proyecto de C #, seleccione el archivo en el panel del Explorador de soluciones y luego mire en el panel Propiedades, verá que la acción de comstackción es ‘Contenido’, no ‘Comstackr’. Se trata como un archivo de texto simple y ni siquiera se incrusta en el ensamblado comstackdo como un recurso binario.

Editar: Con los sitios web de asp.net puede agregar el control de usuario de c # web al sitio web vb.net

Bueno, en realidad heredé un proyecto hace algunos años de un colega que había decidido mezclar formularios web VB y C # dentro del mismo proyecto. Eso funcionó, pero está lejos de ser divertido de mantener.

Decidí que el nuevo código debería ser clases de C # y para que funcionaran, tuve que agregar un subnodo a la parte de comstackción de web.config

    

El código de todos los VB entra en una subcarpeta en App_Code llamada VB y el código C # en la subcarpeta CS. Esto producirá dos archivos .dll. Funciona, pero el código se comstack en el mismo orden que el listado en “codeSubDirectories” y, por lo tanto, es decir, las interfaces deben estar en la carpeta VB si se usan tanto en C # como en VB.

Tengo tanto una referencia a un VB y un comstackdor de C # en

   

El proyecto se actualiza actualmente al marco 3.5 y todavía funciona (pero aún no es divertido de mantener).

No puede mezclar vb yc # dentro del mismo proyecto; si observa en el estudio visual, los archivos del proyecto son .vbproj o .csproj. Puedes dentro de una solución: tener 1 proj en vb y 1 en c #.

Parece que de acuerdo con esto, puede usarlos en un proyecto web en el directorio App_Code:

http://pietschsoft.com/post/2006/03/30/ASPNET-20-Use-VBNET-and-C-within-the-App_Code-folder.aspx

Podría ser posible con algún desarrollo personalizado de MSBuild. Los objectives proporcionados obligan a los proyectos a ser de un solo idioma, pero no hay restricciones de tiempo de ejecución o herramientas que lo impidan.

Los comstackdores de VB y CS pueden enviarse a módulos : la versión CLR de archivos .obj. Utilizando el enlazador de ensamblaje, puede tomar los módulos del código VB y CS y producir un ensamblaje único.

No es que esto sea un esfuerzo de verdad, pero probablemente funcionaría.

Tutorial: Uso de varios lenguajes de progtwigción en un proyecto de sitio web http://msdn.microsoft.com/en-us/library/ms366714.aspx

Por defecto, la carpeta App_Code no permite múltiples lenguajes de progtwigción. Sin embargo, en un proyecto de sitio web puede modificar la estructura de su carpeta y la configuración para admitir múltiples lenguajes de progtwigción como Visual Basic y C # . Esto permite a ASP.NET crear múltiples conjuntos, uno para cada idioma. Para obtener más información, vea Carpetas de códigos compartidos en proyectos web ASP.NET. Los desarrolladores comúnmente incluyen múltiples lenguajes de progtwigción en aplicaciones web para admitir múltiples equipos de desarrollo que operan de manera independiente y prefieren diferentes lenguajes de progtwigción.

Consulte este enlace, que trata el problema y muestra cómo combinar el código VB y C # en un proyecto, en .NET 4.0

http://msdn.microsoft.com/en-us/library/t990ks23.aspx

Aunque Visual Studio no es compatible con esto (puede hacer algunos trucos y obtener MSBuild para comstackr ambos, pero no desde Visual Studio), SharpDevelop lo hace. Puede tener ambos en la misma solución (siempre y cuando esté ejecutando Visual Studio Professional y superior), por lo que la solución más fácil si desea seguir usando Visual Studio es separar su código VB en un proyecto diferente y acceder a él de esa manera.

Haga clic derecho en el proyecto. Elija Agregar carpeta Asp.Net. En The Folder, cree dos carpetas, una llamada VBCodeFiles y la otra CSCodeFiles. En Web.Config agregue un nuevo elemento en comstackción.

       

Ahora, crea una página cshtml. Agregue una referencia a VBCodeFiles.Namespace.MyClassName usando

 @using DMH.VBCodeFiles.Utils.RCMHD @model MyClassname 

Donde MyClassName es un objeto de clase que se encuentra en el espacio de nombres anterior. ahora escribe el objeto en la máquina de afeitar utilizando un archivo cshtml.

 

@Model.FirstName

Tenga en cuenta que directoryName = “CSCodeFiles” es redundante si se trata de un proyecto de C # y directoryName = “VBCodeFiles” es redundante si se trata de un proyecto de VB.Net.

Sí, es posible. Agregar proyectos de c # y vb.net en una sola solución.

paso1: Archivo-> Agregar-> Proyecto existente

Paso 2: Proyecto-> Agregar referencia-> dll o exe del proyecto que ha agregado antes.

paso3: en el formulario vb.net donde quieres usar c # forms-> import namespace of project.

No veo cómo se puede comstackr un proyecto con el comstackdor de C # (o el comstackdor de VB) y no tener que obstaculizar el lenguaje incorrecto para el comstackdor.

Mantenga su código C # en un proyecto separado de su proyecto VB. Puede incluir estos proyectos en la misma solución.

Necesitas un proyecto por idioma. Estoy bastante seguro de que vi una herramienta que fusionó ensamblajes, si encuentra esa herramienta, debería estar listo. Si necesita usar ambos idiomas en la misma clase, debería poder escribir la mitad en, por ejemplo, VB.net y luego escribir el rest en C # heredando la clase VB.net.

A riesgo de hacer eco de todas las demás respuestas, no, no puedes mezclarlas en el mismo proyecto.

Aparte de eso, si acabas de convertir VB a C #, ¿por qué escribirías un nuevo código en VB?

Para .net 2.0 esto funciona. SÍ comstack ambos en el mismo proyecto si crea subdirectorios en el código de la aplicación con el código de idioma relacionado. Hasta el momento, estoy buscando si esto debería funcionar en 3.5 o no.

¿Por qué no comstacks tu código VB en una biblioteca ( .dll )? Refiéralo más tarde desde tu código y listo. Los dlls administrados contienen MSIL al cual se comstackn tanto c# como vb .

Como han dicho otros, no puedes poner ambos en un solo proyecto. Sin embargo, si solo tiene un pequeño fragmento de código C o VB que desea incluir en un proyecto en el otro idioma, existen herramientas de conversión automática. No son perfectos, pero hacen la mayoría de las cosas bastante bien. Además, SharpDevelop tiene una utilidad de conversión integrada.

No, no en el mismo proyecto, pero puedes usarlos en la misma solución. aunque debe tener cuidado de que su código cumpla con CLS. Eso significa que no debe haber utilizado dicha funcionalidad / función que no sea comprendida por otro idioma. Por ejemplo, VB no entiende las notas sin signo.

Sí, puede agregar ambos archivos en el sitio web solamente. Si el proyecto es una aplicación web, no permitirá diferentes tipos de archivos.