Justamente me acaban de preguntar como utilizar estos lenguajes de este modo. Este articulo lo escribí en Septiembre de 2006, y lo había colgado de otro en MisTrucos.NET, en mi Space.
Aquí en Geeks.ms ya lo comento José M. Alarcón, en base a cualquier lenguaje:
Quise postearlo aquí para que quede en el historial 😉
Aquí va…
Bueno he de aquí que por las cosas de la vida y componentes que reutilice y falta de tiempo necesite utilizar clases en VB.NET y C# dentro de la carpeta APP_CODE en un proyecto web en VS2005..
Coloque mis clases Clase1.vb y Clase2.cs en la carpeta y genero el siguiente error:
Exception Details: System.Web.HttpException: The files ‘/WebSite1/App_Code/Clase2.cs’ and ‘/WebSite1/App_Code/Clase1.vb’ use a different language, which is not allowed since they need to be compiled together.
Pero no creí que tuviera esta limitación así que me dedique a verificar como seria el proceso de indicarle el tipo de lenguaje que se utiliza en la famosa carpeta… por defecto el directorio APP_CODE puede contener clases del mismo lenguaje, pero se puede agregar subdirectorios e indicar a ASP.NET que los compile separadamente.
Cual es el proceso?….
- Primeramente insertar en la seccion de <compilation> del webconfig estas lineas que agregan un coleccion de subdirectorios que asp.net debe compilar en forma separada, o mejor dicho de forma agrupada por estos directorios…
<codeSubDirectories>
<add directoryName=»App_Code_VB»/>
<add directoryName=»App_Code_CS»/>
</codeSubDirectories>
- Luego tendías que crear estos directorios
/App_Code/App_Code_VB
/App_Code/App_Code_CS
- Y llegando al final, distribuir nuestras clases de VB.NET dentro de la carpeta correspondiente App_Code_VB, y las de C# en la carpeta App_Code_CS
Algunos datos interesantes (desde los enlaces a MSDN):
- El orden de generación se deduce del orden descendente de la colección codeSubDirectories.
- El directorio App_Code se genera en último lugar.
- Los subdirectorios se muestran en el orden en el que se debe compilar el código para cumplir sus dependencias, pero…
- No existen dependencias de orden de generación, lo que significa que este orden no es significativo.
- No hay ningún elemento codeSubDirectories predeterminado configurado para ASP.NET.
- Puede haber cualquier número de subdirectorios
Enlaces:
- Sharing Code Between Pages
http://dotnetjunkies.com/QuickStartv20/aspnet/doc/pages/code.aspx - Elemento codeSubDirectories para compilation (Esquema de configuración de ASP.NET)
http://msdn2.microsoft.com/es-es/library/54dwfbb7.aspx - Elemento add aplicado a codeSubDirectories para compilation (Esquema de configuración de ASP.NET)
http://msdn2.microsoft.com/es-es/library/221faf8e.aspx - CompilationSection.CodeSubDirectories (Propiedad)
http://msdn2.microsoft.com/es-es/library/system.web.configuration.compilationsection.codesubdirectories.aspx
Muy bueno este truco, no sabia que esto era posible.
Saludos.
Gracias por la info! 🙂
Me ha solucionado un pequeño problemilla.. jeje
Saludos
Muchas Gracias, por este tip.
Me es muy util.
Saludos
No se Si este post este vigente, muy util , lo implemente para tener acceso a una clase en C#, sin embargo cuando la llamo desde el código Vb (Asp.net, Visual Studio 2005) no encuentro la clase para poder usarla, quizas haya algun otro detalle que se me escapa.
Lo Agradecería
Gracias
Alberto
has mirado si tienes en las propiedades de contrucion de la clase en compile no content¿¿¿????