2010-02-17 25 views
39

Estaba intentando crear un sitio web de datos dinámicos utilizando VS 2010 RC. Un intento de crear una carpeta App_Code donde colocaría una clase LINQ a SQL falló. Cuando he seleccionado 'Agregar carpeta ASP.NET' para añadir la carpeta, que tenía opciones para crear solamente las siguientes carpetas:Falta la carpeta App_Code en VS 2010

  • App_GlobalResources
  • App_LocalResources
  • App_Data
  • App_Browsers
  • temáticas

¿Qué pasó con la carpeta App_Code?

Respuesta

35

Por qué no crear otro proyecto, una biblioteca de clases, y ponerlo allí. Esa es, de lejos, la mejor manera de mantener esas clases separadas del resto de su sitio web.

Para responder a su pregunta específica sobre la carpeta App_Code, está disponible en proyectos WebSite como una carpeta Asp.Net que puede elegir. Pero desde un proyecto de aplicación web, puede crear una nueva carpeta y ponerle el nombre App_Code y funcionará perfectamente. Esto es a partir de Visual Studio 2010 RC.

+0

Es una aplicación de demostración. Quiero que sea lo más simple posible. – Vadim

+1

Aún agregaría otro proyecto para sus clases de dal. Realmente no agrega ninguna complejidad y puede usarlo nuevamente si necesita aumentar el nivel de producción. –

+1

Estoy de acuerdo con la sugerencia, pero esto realmente no responde la pregunta. –

2

También me pareció divertido que falta. Lo que pasa es que "no" necesita crear la carpeta App_Code, solo agrega las clases a cualquier carpeta nueva.

En VS 2005, cualquier clase fuera de App_Code daría un error de compilación.

Entonces, ¿también quiero saber por qué decidieron eliminar esta restricción? ¿Fue por la gente que se quejó de ello o el concepto de diseño cambió y se consideró necesario?

23

no puede/no debe agregar la carpeta App_Code a una aplicación web porque esta carpeta está diseñada para compilación en tiempo de ejecución por asp.net y el proyecto de aplicación web está diseñado para precompilar su sitio web en un dll que puede encontrar en la carpeta Bin e implementar en su sitio. Si agrega esto manualmente, puede terminar teniendo conflictos de nombres ya que la clase será precompilada a la dll y luego asp.net nuevamente intentará recompilar en tiempo de ejecución.

Por lo tanto, para Proyectos de aplicaciones web, en su lugar debe agregar una carpeta llamada algo así como 'CodeFolder' y luego agregar su clase allí. A continuación, haga clic con el botón derecho en las propiedades de ese archivo de clase y establezca su configuración de compilación en lugar de contenido.

Estoy trabajando en mi propio proyecto web para www.athenatennis.com.sg y estoy yendo a través de una curva de aprendizaje similar con eso.

+7

"no puede/no debe agregar la carpeta App_Code a una aplicación web porque esta carpeta está diseñada para la compilación en tiempo de ejecución" Creo que la respuesta aceptada debe editarse para incluir esto. Explica ** por qué ** la pregunta original es un mal enfoque, no solo sugerir una mejor práctica. @Chris Conway implica que no hay problema con la creación de una carpeta App_Code, pero me he quemado personalmente de varias maneras. – CrazyPyro

0

en VS 2010, es necesario crear una solución, a continuación, haga clic derecho -> Añadir nuevo sitio web, a continuación, cuando se agrega clases, linq2sql etc, frente a crear la carpeta App_Code para usted

0

Si desea app_code carpeta, debe crear "sitio web ASP.NET". Una vez hecho, haga clic derecho en el sitio web (Solution Explorer) -> Agregar carpeta ASP.NET-> App_Code.

Si está buscando en la carpeta app_code dentro de "ASP.NET web application", está perdiendo el tiempo.

0

si crea una clase, le preguntará si desea agregarla a una carpeta de código de la aplicación.

3

Puede crear manualmente la carpeta App_Code y agregar su clase dentro. Una cosa que debe tomar nota es ... en las propiedades del archivo, asegúrese de que la Acción de compilación esté configurada en Compilar.

+0

¡Esto es súper importante! De forma predeterminada, no parece establecer esto para archivos de clase fuera de la carpeta App_Code, en aplicaciones web .NET 4.0+ (no estoy seguro acerca de las versiones más bajas). Esto provocó que todos mis IHttpModules no se compilaran y se dispararan durante la prueba, hasta que se configuraron para compilarse. – Jacob

0

Es muy fácil simplemente agregue la nueva clase desde Agregar nuevo elemento Visual Studio 2010 mostrará automáticamente el mensaje "¿Desea colocar el archivo en la carpeta App_Code". Haga clic en Aceptar. [Introduzca la descripción de la imagen aquí] [1]

Cuestiones relacionadas