2008-09-18 50 views
28

Tengo un problema realmente extraño con mi carpeta App_Code en un nuevo sitio web que estoy diseñando.Problemas de la carpeta App_Code

Tengo una clase básica dentro de un espacio de nombres en la carpeta App_Code. Todo funciona bien en el IDE cuando configuro el espacio de nombres y hago un objeto de la clase. Abre el resumen de la clase en vuelo estacionario, y cuando haces clic en "ir a deffinition" va al archivo de la clase. Y también funciona bien localy.

Sin embargo, cuando la carga del sitio en mi servidor, me sale este mensaje de error cuando accedo a la página:

Línea 10: el uso de System.Web.UI.WebControls;
Línea 11: utilizando System.Web.UI.WebControls.WebParts;
Línea 12: el uso de xxxx.xxxx

compilador mensaje de error: CS0246: El tipo o espacio de nombres 'xxxxxx' no se pudo encontrar (¿falta una directiva using o una referencia de ensamblado?)

Sé a ciencia cierta que el archivo de clase está allí. ¿Alguien tiene alguna idea de lo que está pasando?

ediciones:

Juan, sí que es un sitio 2.0.

+0

¿Cómo publicó el sitio en el servidor? – Kev

Respuesta

18

Si su aplicación es un proyecto de aplicación web en lugar de un proyecto de sitio web, los archivos de código no deberían estar en la carpeta App_Code (diseño estúpido, lo sé). Crea una nueva carpeta llamada código o algo y ponlos allí.

Me causó todo tipo de problemas cuando actualicé una serie de viejos sitios web .Net a proyectos de aplicaciones.

+0

Vale la pena señalar que si simplemente arrastra los archivos de código fuera de la carpeta App_Code y hacia su nueva carpeta, su propiedad de acción de compilación aún puede establecerse en contenido, y el resto de la aplicación no podrá ver los espacios de nombres, como una de las respuestas que se mencionan a continuación, configurar esto para compilar, ordenará esto, creo que cualquier archivo de clase creado en la carpeta App_Code de forma predeterminada se configurará para compilar action = content, incluso en un proyecto WAP. – JsonStatham

+0

¡Qué pérdida de tiempo! ¡Nada más que dolores de cabeza por 6 meses! ¡Gracias por publicar! +1 http://stackoverflow.com/questions/26135251/catch-exceptions-in-asp-net-resulting-from-generic-handler-ashx-file/26136417#26136417 – MacGyver

+0

Sí, tenía una aplicación web y un proyecto de C# tipos. http://www.mztools.com/Articles/2008/MZ2008017.aspx – MacGyver

1

He notado una falta de coincidencia a veces entre el analizador IDE y el compilador cada vez que se produce un error en tiempo de compilación en un ensamblado o archivo de código referenciado. En esa circunstancia, IDE identificará correctamente los tipos y proporcionará soporte completo para ellos, pero como el compilador no pudo crear los objetos referenciados, se quejará de que los objetos a los que se hace referencia no existen.

Ahora no quiero acusar a nadie de nada, esto es sólo una suposición, pero probablemente debería asegurarse de que no haya ningún error en el archivo de código al que se hace referencia.

1

Dependiendo de cómo publique el sitio, no se verá en App_Code, buscará una DLL en la carpeta Bin que contenga la clase. ¿Cómo transfirió su sitio web al servidor?

2

Esto me pasó a mí y la solución fue que App_Code (y App_Data) no se pusieron en la raíz del servidor, sino en una subcarpeta que contenía todo lo demás. Debe estar enraizado!

63

El problema que sus clases no se compilan, Usted va a resolver este problema simplemente por ir a las propiedades de cualquier clase en la carpeta App_Code y cambiar su 'Acción de generación' propiedad de "contenido" a "Compilar"

+0

¿Existe algún medio para cambiar la acción de compilación de cada clase a la vez? – binard

+2

¿Cuál es la ramificación de hacer esto? ¿Hay alguna razón por la cual esta sea la configuración predeterminada? – Coops

+1

No puedo hacer clic en la propiedad está deshabilitada – Lijo

0

Para los que siguen ... tuve este mismo conjunto de problemas, pero fue causado porque nombré una clase en App_Code, 'HTML'. Me tomó un tiempo darme cuenta de que solo era un conflicto de nombres porque el compilador no estaba siendo muy útil para decirme cuál era el problema.

Cuestiones relacionadas