c# - Las clases que residen en App_Code no son accesibles
asp.net (7)
Creé un sitio web en ASP.NET y creé una clase y la puse dentro de la carpeta App_Code. Sin embargo, no puedo acceder a esto desde mis otras páginas. ¿Hay que configurar algo para permitir esto? Lo he hecho funcionar en proyectos anteriores, pero no en este, de alguna manera.
namespace CLIck10.App_Code
{
public static class Glob
{
...
}
}
Coloque esto en la parte superior de los otros archivos donde desea acceder a la clase:
using CLIck10.App_Code;
O acceda a la clase desde otros archivos como este:
CLIck10.App_Code.Glob
No estoy seguro de si ese es su problema o no, pero si era nuevo en C #, entonces es muy fácil que se tropiece.
Actualización: Recientemente descubrí que si agrego una carpeta App_Code a un proyecto, debo cerrar / volver a abrir Visual Studio para que reconozca correctamente esta carpeta "especial".
En mi caso, no pude construir un proyecto con las clases definidas en la carpeta App_Code.
No se puede replicar el escenario precisamente para comentar, pero tuvo que cerrar y volver a abrir Visual Studio para que intellisense cooperara de acuerdo ...
Noté que cuando una clase en la carpeta App_Code está configurada como ''Compilar'' en lugar de ''Contenido'' (haga clic con el botón derecho), los errores provenían de una segunda versión de la clase ... Mire a la izquierda de la 3 de los 3 campos entre el panel de códigos y la pestaña. Al ''otro'' se le llamó algo parecido a 10_App_Code o similar.
Para rectificar el problema, cambié el nombre de la carpeta de App_Code a Code, establecí explícitamente espacios de nombres en las clases y establecí todas las clases en ''Compile''
Haga clic derecho en el archivo .cs
en la carpeta App_Code
y verifique sus propiedades.
Asegúrese de que la "Acción de compilación" esté configurada en "Compilar".
Me resultó más fácil mover los archivos a un proyecto separado de la Biblioteca de clases y luego hacer referencia a ese proyecto en el proyecto web y aplicar el espacio de nombres en la sección de uso del archivo. Por alguna razón, las otras soluciones no me funcionaban, pero este trabajo no funcionó.
Todavía no me he dado cuenta de por qué ocurre esto, pero tenía clases que estaban en mi carpeta App_Code
que llamaban métodos entre sí, y estaban bien al hacer esto cuando construí un proyecto .NET 4.5.2, pero luego tuve para revertirlo a 4.0 ya que el servidor de destino no se estaba actualizando. Fue entonces cuando encontré este problema (después de corregir la langversion
de langversion
en mi web.config de 6 a 5 ... otra historia) ...
Uno de mis métodos siguió teniendo un error como:
The type X.Y conflicts with the imported type X.Y in MyProject.DLL
Todas mis clases ya estaban configuradas para "Compilar" en sus propiedades, como se sugiere en la respuesta aceptada aquí, y cada una tenía un espacio de nombres común que era el mismo, y cada una tenía el using MyNamespace;
en la parte superior de cada clase.
Descubrí que si solo movía las clases ofensivas que tenían que llamar métodos entre sí a otra carpeta estándar llamada algo distinta de "App_Code", dejaban de tener este problema de conflicto.
Nota : Si crea una carpeta estándar llamada "AppCode", mueve sus clases en ella, elimina la carpeta "App_Code", luego cambia el nombre de "AppCode" a "App_Code", sus problemas volverán. No importa si usa la opción "Nueva carpeta" o "Agregar carpeta ASP .NET" para crear "Código_aplicación", parece que ingresa el nombre.
Tal vez esto sea solo un problema de .NET 4.0 (y posiblemente antes) ... ¡Estaba bien en 4.5.2 antes de tener que revertir!
Vaya a la página desde la que desea acceder a la clase App_code y luego agregue el espacio de nombres de la clase app_code. Debe proporcionar una declaración de using
siguiente manera:
using WebApplication3.App_Code;
Después de eso, deberá ir a la propiedad de clase app_code y establecer ''Build Action'' en ''Compile''.
asegúrese de estar usando el mismo espacio de nombres que sus páginas