2010-02-26 18 views
23

La pregunta es bastante antigua y a menudo pregunta, tengo preguntas similares aquí, pero mi pregunta es un poco más específica.Mezclar código VB.Net y C# en un proyecto de sitio web ASP.Net?

Q1. ¿Es legal mezclar el código C# y VB.Net en el sitio web de ASP.Net? ¿Funcionará o no? Si funciona, ¿cómo se puede hacer? Cualquier muestra será buena.

Q2. Si hay alguna repercusión de mezclar el código C# y VB.Net, por favor, comparta esos también.

Tengo un proyecto web codificado en VB.Net. Estoy trabajando en un módulo del proyecto. y quiero codificar en C#. No puedo convertir todo el proyecto a C# porque no soy el único que trabaja en el proyecto. Sin embargo, el módulo que pretendo construir, quiero tenerlo en C#.

He oído que en el caso de los proyectos web, si codificamos la parte en C# y parte en VB.net, entonces hay problemas para compilar el proyecto en un dll. ¿Es eso cierto? si es así, ¿cuál es la solución?

Además, si estoy creando una biblioteca de enlaces dinámicos en .Net, ¿puedo mezclar el código C# y Vb.Net?

Respuesta

49

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

múltiples lenguajes de programación en el App_Code carpeta

Debido a que el código fuente en la carpeta App_Code se compila en un solo conjunto, todos los archivos de la carpeta App_Code deben estar en el mismo lenguaje de programación. Por ejemplo, la carpeta App_Code no puede incluir el código fuente tanto en Visual Basic como en C#.

Sin embargo, puede configurar su aplicación web para tratar las subcarpetas de la carpeta App_Code como unidades compilables separadas. Cada carpeta puede contener el código fuente en un lenguaje de programación diferente. La configuración se especifica creando un elemento codeSubDirectories en el elemento de compilación del archivo Web.config y agregando una referencia a la subcarpeta. El siguiente ejemplo ilustra cómo se configuraría subcarpetas con el nombre código vB y CSCode a compilar en asambleas separadas:

<compilation debug="false"> 
    <codeSubDirectories> 
     <add directoryName="VBCode" /> 
     <add directoryName="CSCode" /> 
    </codeSubDirectories> 
</compilation> 

Las referencias a las subcarpetas código vB y CSCode no es necesario incluir ninguna información acerca de lo que el lenguaje de programación está contenida en la subcarpeta . Al igual que con la carpeta App_Code, ASP.NET infiere el compilador para utilizar en función de los archivos en la subcarpeta.

+3

+1. buena respuesta... –

+7

La solución proporcionada funciona para un proyecto web SITE. Steve preguntó sobre un proyecto de APLICACIÓN web, sin embargo, que no usa carpetas de app_code. – Axeva

+0

WHAT A GENIUS .... +10000 –

0

Parece que puede mezclarlos dentro del mismo proyecto si hace la pieza de código que necesita como control. Entonces, si el sitio principal está en C# y usted hace la parte VB que desea como control ascx, puede drapear y soltar eso dentro de su sitio.

No me di cuenta de que podías hacer eso, pero un miembro del equipo resolvió un trabajo que estaba haciendo.

8

La respuesta aquí que tiene la mayoría de los votos solo funciona para proyectos de sitios web, no como un proyecto de aplicación web. Creo que muchos desarrolladores usan el término "aplicación web" ignorando genéricamente el hecho de que técnicamente es algo diferente en .NET. Microsoft dice: "Por defecto, una aplicación web se compila en función de las configuraciones de idioma en el archivo del proyecto. Se pueden hacer excepciones, pero es relativamente difícil". Por lo tanto, supongo que la única forma de hacerlo sería tener dos proyectos separados en una sola solución. (Una vez más, un proyecto de sitio web no tiene una solución o archivo de proyecto.) No estoy seguro de todos los detalles.

+1

"(De nuevo, un proyecto de sitio web no tiene una solución o archivo de proyecto.)" * * Puede * tener un archivo de solución, en realidad (VS incluso puede pedirle que guarde uno), pero sí, no tiene proyecto –

+0

@ user692918: +1, Corrección realizada para el título y el contenido. Tuve una solución con un proyecto de sitio web con varios otros proyectos. –

+0

¿La solución anterior funciona para el proyecto de aplicación web? Tengo una gran aplicación web con múltiples proyectos. Voy a agregar nuevos cambios en C# con el mismo proyecto web y otros proyectos de la biblioteca de clase. ¿Eso funciona para mi? –

Cuestiones relacionadas