asp.net - the - Error BC30002-Tipo XXX no está definido
compiler error message the compiler failed with error code 2146232576 (3)
Suena como que sucede cada vez que el sitio web se activa (la aplicación se recicla cada vez que toca app_code y probablemente tiene IIS configurado para cerrar el sitio web después de X minutos de inactividad).
Apuesto a que tiene algo que ver con el proceso de trabajo asp.net que no tiene los derechos de acceso correctos en el servidor. Entonces está tratando de cargar un ensamblado y se lo niega.
Consulte este enlace y la Tabla 19.3 para obtener una lista de todas las carpetas a las que debe tener acceso la cuenta de proceso de trabajo para poder funcionar. ¡Y no olvide darle derechos a todos los archivos y carpetas en su directorio virtual!
OK, esto comienza a volverme loco. Tengo una aplicación web asp.net. Bastante sencillo, la mayoría del código en .aspx.vb, y algunas clases en App_Code.
El problema, que comenzó a ocurrir solo hoy (aunque la mayoría del código ya estaba escrito), es que de vez en cuando aparece este mensaje de error:
Error BC30002: Tipo ''XXX'' no está definido
El error ocurre cada vez que modifico los archivos en la carpeta App_Code. EDITAR: OK, esto sucede también si no toco nada por un tiempo y luego actualizo la página. Todavía estoy tratando de descubrir exactamente cómo desencadenar este error.
Solo tengo que esperar un poco sin tocar nada, luego actualizar la página y funciona, pero es muy molesto.
Así que busqué un poco, pero no salió nada, excepto las importaciones que faltaban. Alguna idea ?
Creo que encontré el problema.
Mi código era así:
Imports CMS
Sub Whatever()
Dim a as new Arbo.MyObject() '' Arbo is a namespace inside CMS
Dim b as new Util.MyOtherObject() '' Util is a namespace inside Util
End Sub
No estoy seguro de por qué lo escribí así, pero resulta que el hecho de que estaba llamando a clases sin llamar a todo el espacio de nombres o importar todo el espacio de nombres provocaba el error.
Lo reescribí así:
Imports CMS.Arbo
Imports CMS.Util
Sub Whatever()
Dim a as new MyObject()
Dim b as new MyOtherObject()
End Sub
Y ahora funciona ...
Suena como un problema de pre compilación, particularmente porque mencionas que recibes el error y luego esperas y desaparece. ASP.NET puede estar todavía en el proceso de compilación dinámica de su aplicación o ha compilado los tipos en diferentes conjuntos.
Con la compilación dinámica, no se garantiza que tenga diferentes archivos codebehind compilados en el mismo ensamblado. Por lo tanto, es posible que el tipo al que hace referencia no se pueda resolver dentro de su ensamblado precompilado.
Intente utilizar la directiva "@Reference" para indicar al tiempo de ejecución que su página y el archivo que contiene su tipo deben compilarse en el mismo ensamblaje.