"No se pudo cargar el tipo [espacio de nombres] .Global", lo que me causa dolor

106

En mi aplicación .Net 2.0 Asp.net WebForms, tengo mi Global.asax que contiene el siguiente código:

<%@ Application CodeBehind="Global.asax.cs" Inherits="MyNamespace.Global" Language="C#" %>

Sin embargo, cuando construyo, aparece un error que dice:

No se pudo cargar el tipo 'MyNamespace.Global'.

Esto parece deberse a que el espacio de nombres MyNamespace (definido en el código detrás del archivo Global.asax.cs) no es visto por el compilador en el archivo Global.asax (no se muestra en R # intellisence ..). Esto resultó ser un hueso muy difícil de romper ... ¡cualquier ayuda será apreciada!

Nota: Global.asax y Global.asax.cs se encuentran en la misma carpeta.

Nota 2: cuando se compila desde el indicador vs con csc, se compila bien

gkdm
fuente
¿Funcionan otras páginas de la aplicación? A veces, esto sucede cuando el servidor web está configurado para ejecutar 1.1 pero la aplicación está compilada para 2.0
Noon Silk
sí, 'Target Framework' es 2.0
gkdm

Respuestas:

162

Una situación que he encontrado que causó este problema es cuando especifica la plataforma para una compilación a través de "Configuración de compilación".

Si especifica x86 como su plataforma de compilación, Visual Studio asignará automáticamente bin / x86 / Debug como su directorio de salida para este proyecto. Esto es perfectamente válido para otros tipos de proyectos, excepto para aplicaciones web donde ASP.NET espera que los ensamblados se envíen a la carpeta Bin.

Lo que encontré en mi situación fue que se estaban enviando a ambos (Bin y Bin / x86 / Debug), con la excepción de que algunos de los dll, e inexplicablemente el más importante es el dll de su aplicación web, faltaban en el Bin carpeta.

Obviamente, esto provocó un problema de compilación y, por tanto, la excepción "No se pudo cargar el tipo global". Limpiar la solución y eliminar los ensamblajes no supuso ninguna diferencia para las compilaciones posteriores. Mi solución fue simplemente cambiar la ruta de salida en la configuración del proyecto para la aplicación web a Bin (en lugar de bin / x86 / Debug).

stantona
fuente
13
Además: intente cerrar y volver a abrir VS. Si está utilizando un servidor de depuración integrado, es posible que esté ejecutando un sitio web diferente. La apertura / cierre volverá a registrar los puertos del host local.
BradLaney
1
En mi caso, quería poner la salida del proyecto en inetpub \ wwwroot \ myproject \ bin, pero tenía iisexpress configurado para buscar en myProject \ bin. Simplemente cambiando la ruta de salida resolvió el problema.
shindigo
En mi caso, tenía un .dll que debería haberse incluido, pero no estaba configurado para 'copiar local' por alguna razón. Esto causó un problema de compilación similar al indicado en esta respuesta.
HockeyJ
Gracias, Stantona. Esto es lo que funcionó para mí, y justo a tiempo para irme a casa.
Bill Norman
3
Cambiar la ruta de salida del proyecto a la carpeta bin resolvió el problema. ¡Gracias por salvarme el día!
Tunahan
18

¿Ha cambiado el espacio de nombres de su proyecto? He visto que esto sucede ocasionalmente cuando cambié el espacio de nombres en el cuadro de diálogo Propiedades del proyecto, pero Visual Studio no ha cambiado la namespacedeclaración en los archivos de código existentes.

PhilPursglove
fuente
¿Que crees que deberia hacer?
gkdm
1
Verifique el espacio de nombres en su archivo .cs y asegúrese de que sea el mismo que el declarado en el archivo asax. Mi sospecha es que serán diferentes ...
PhilPursglove
Entonces no estoy seguro. Todo lo que puedo sugerir por ahora es reconstruir y verificar el contenido de los espacios de nombres en su ensamblado con ILDASM.
PhilPursglove
Gracias, esta fue la solución que me ayudó. Usaré Resharper para verificar todos los espacios de nombres en mi solución.
Leonard
Acabo de ocurrir esto: en un proyecto MVC 5 (no es que importe) y cambié el espacio de nombres del proyecto, pero olvidé cambiar Global.asax (y la carpeta App_Start). Independientemente de la experiencia, a veces los descuidos tontos todavía te atrapan.
Jason Snelders
15

Soy nuevo en el desarrollo de asp .net y me enfrenté a un problema similar.

Actualicé la clase como partialclase y funcionó bien.

public partial class Global : System.Web.HttpApplication
sri
fuente
1
No estoy seguro de por qué mi archivo global terminó sin esto, pero este fue el problema para mí, ¡gracias!
ginja
9

Reinicié Visual Studio y el error desapareció.

Manoj Attal
fuente
2
lo mismo funcionó para mí. Asegúrese de cerrar TODOS los Visual Studio abiertos.
alansiqueira27
5

Aquí hay otro para los libros. Parece que esto sucede cuando inicia más de una aplicación web desde el mismo número de puerto.

Básicamente, tengo un par de ramas en las que trabajo, tengo una rama principal y una rama de preparación y una rama de liberación. Cuando cambié la rama a la rama provisional, noté que estaba usando la misma configuración de dirección de puerto, así que opté por cambiar eso. Luego recibí otra advertencia de que esta reserva entra en conflicto con otra aplicación configurada. El servidor IIS Express es sensible al respecto y, por alguna razón, bloquea la configuración.

Simplemente eligiendo un tercer puerto no afectado, este problema desapareció porque luego asigna el puerto a una nueva asignación de directorio (mis sucursales están ubicadas de manera diferente en el disco). Me di cuenta de esto porque intenté cambiar el nombre del tipo al que apuntabaGlobal.asax pero el nombre del tipo no cambió incluso después de reiniciar el servidor, así que claramente, el código que estaba cambiando no se reflejó en la implementación de IIS Express.

Entonces, antes de perder demasiado el sueño por esto, intente cambiar el número de puerto IIS que se usa actualmente para ejecutar el proyecto web.

John Leidegren
fuente
5
  1. Haga clic derecho en Project Solution y seleccione Batch Build.
  2. Luego seleccione Su nombre de proyecto y Limpiar y reconstruir.

Funciona bien para mí EN VS 2015. Ahora puedo usar el evento global. Mi Global.asaxarchivo tiene esta línea

<%@ Application Language="C#" CodeBehind="~/App_Code/Global.asax.cs" Inherits="Global" %>

Y hago un archivo de clase Global.asax.csque está en una AppCodecarpeta que parece

public partial class Global : HttpApplication
{
    public Global()
    {
        //
        // TODO: Add constructor logic here
        //
    }
}

Espero que esto sea de ayuda

parimal
fuente
3

Compruebe la acción de compilación de Global.asax.cs. Debería establecerse en Compilar.

En el Explorador de soluciones, haga clic con el botón derecho en Global.asax.cs y vaya a Propiedades. En el panel Propiedades, configure la Acción de compilación ( sin depurar).

Parece que VS 2008 no siempre agrega los archivos .asax (.cs) correctamente de forma predeterminada.

jyoungdev
fuente
3

Experimenté un error similar al tener un

<clear/>

etiqueta como hijo (el primer hijo) de la

<assemblies>

etiqueta en mi Web.config . Había insertado las etiquetas en mi web.config en un intento de evitar la herencia de la configuración en una aplicación implementada en el 'Sitio web predeterminado' en IIS.

Jasonjonesutah
fuente
Esto definitivamente me apuntó en la dirección correcta. Termina, había puesto <clear /> en el directorio principal ya que era un marcador de posición vacío. Creo que el problema real fue que borró los ensamblados a los que hacía referencia mi aplicación, lo que impidió que se cargara el ensamblaje de la aplicación.
Doug Lampe
También experimenté esto: eliminar los ensamblados seleccionados explícitamente en lugar de borrar la lista funcionó muy bien.
Arve Systad
2

En mi situación, estaba relacionado con el tipo de sitio web / aplicación web del proyecto. Recientemente nos mudamos a MVC y tuvimos que cambiarlo a Aplicación web.

Entonces, la solución fue simple: seleccione su sitio web en el Explorador de soluciones y elimínelo de la solución, luego haga clic derecho en la solución y seleccione Agregar -> Proyecto existente ( no sitio web ), vuelva a compilar el sitio web.

Sergey
fuente
2

Publicación anterior, pero aparece este error al intentar convertir de un proyecto de sitio web a un proyecto de aplicación web.

Siga las instrucciones de este enlace . Sigo recibiendo el error global.asax, pero todo lo que hice fue eliminarlo y volver a agregarlo haciendo clic derecho en el proyecto en Visual Studio y seleccionando agregar nuevo elemento. Agregue el archivo global.asax y funcionó.

mjroodt
fuente
2

Ninguno de estos funcionó para mí, desafortunadamente. La solución que encontré fue más específica para el desarrollo, específicamente, depurar en su máquina local. Además, desafortunadamente, en realidad no soluciona el problema de la manera que esperaba, pero si estás en el extremo de tu ingenio, esto podría hacerte volver a ejecutar.

TL; DR: En las propiedades del proyecto, en la pestaña web, en Servidores, seleccione Usar servidor web IIS local. La dirección,

http://localhost/MyApp" 

ya estaba poblado (tengo IIS7, .NET 4.0). Lo que se seleccionó originalmente fue "Usar Visual Studio Development Server" con una ruta virtual de "/"

Lo que realmente me desconcierta es el hecho de que nada más funcionó, revisé todas las sugerencias que pude encontrar en SO y nada funcionó. Lo extraño es que el error se manifestó (aparentemente, han pasado unos meses desde la última vez que miré) cuando agregué un nuevo archivo ascx que era similar a uno existente que se agregó desde un antiguo proyecto .net 2.0 (creo) eso permitiría la administración de usuarios personalizada desde dentro de la aplicación. Estuvo funcionando, maravillosamente, durante mucho tiempo, hasta que intenté agregar este nuevo archivo. Después de agregarlo y ver el error, rápidamente revertí todos los cambios, pero el error Global.ascx no desaparecía, ni siquiera destruía todo el proyecto y volvía a obtener lo último del control de fuente.

BrDaHa
fuente
2

Convertí mi solución de VS2003 a VS2010 y tuve problemas para convertir el proyecto de la aplicación web.

Experimenté exactamente el mismo problema y ninguna de las respuestas funcionó para mí.

Lo que funcionó para mí fue:

  • Haga clic derecho en la solución y seleccione Administrador de configuración
  • Observó cada una de las configuraciones en la lista desplegable 'Configuración de solución activa'.
  • Incluyó la aplicación web en la compilación marcando la casilla de verificación 'Compilar'.

parece que los problemas que tuve durante la conversión habían eliminado el proyecto de la aplicación web de la compilación por alguna razón.

Espero que esta respuesta ayude a cualquier otra persona que tenga el mismo problema ...

mezoide
fuente
1

Si reconstruye o cambia un proyecto y mueve archivos de uno anterior, asegúrese de marcar el bloque Heredar de su archivo global. En mi caso, el proyecto / solución anterior se llamaba intranet, y lo había recreado como Intranet, pero cuando me moví sobre los archivos, no le gustó la minúscula (duh). Simplemente revise los nombres de los archivos.

arcángel76
fuente
1

Cambie el GUID del ensamblado. Esto soluciona muchos MUCHOS problemas, he encontrado.

Nathan M
fuente
¿Cómo se cambia el GUID?
Drew Chapin
1

Tuve problemas similares en los que recibía este error en un proyecto.

Could not load type [Namespace].Global
Error in Line 1   etc etc

Después de pasar un tiempo sospecho de una función con posibles errores en una clase ... luego comentando esa función específica, mi problema se resuelve.

No sé por qué Visual Studio no me dio ese error específico en el momento de la depuración. Pero este error puede ocurrir debido a algunos errores en el archivo de clase.

panky sharma
fuente
1

Esto funciona para mí: Lo primero: parece que no importa lo que le dijiste a Visual Studio, el IDE siempre busca el archivo en: bin (para la aplicación web y, por supuesto, en mi caso) Entonces, incluso cuando le dije a Visual Studio una ruta específica para cargar el archivo, el IDE sigue buscando la ruta incorrecta. Así que cambio en: Build / Configuration Manager el tipo de salida a: Release (antes limpié la solución, incluso manualmente) así que, cuando se creó el archivo .dll, lo moví manualmente a la carpeta "bin" debajo del proyecto / solución carpeta. ¡Espero que esto sea útil!

galimatias
fuente
1

En mi caso, fue debido a mi procesador de destino (x64) lo cambié a x86 limpié el proyecto, reinicié VS (2012) y reconstruí el proyecto; luego se fue.

bigpony
fuente
1

Cuando encontré este problema más recientemente, probé todo lo mencionado aquí, pero fue en vano. Después de arrancarme el pelo, decidí intentar borrar todo mi código base (¡sí, bastante desesperado!) Y luego volver a descargar todo de mi repositorio de código. Después de hacer esto, todo funcionó bien una vez más.

Parece una solución extrema, pero pensé en incluirla aquí, ya que no se ha mencionado antes en este hilo.

(Tenga en cuenta que la otra vez que me encontré con este problema, fue cuando Global.asax estaba heredando de un componente que debía registrarse en la máquina host. Esto faltaba, por lo que tuve el mismo problema).

TL; DR; Si todas las respuestas en este hilo no funcionan para usted, intente eliminar y luego volver a descargar toda su base de código.

Ben Smith
fuente
1

Me he encontrado con este problema varias veces y en cada caso estaba reconstruyendo una computadora o cambiando a una nueva. Mi primer paso (además de actualizar la máquina e instalar Visual Studio) es sacar mis proyectos de Git y probarlos.

Me toco con este error cada vez porque intenté acceder a mi código local antes de compilarlo. Verá, tengo la configuración de Git y Subversion para ignorar mis carpetas bin / build, así que después de extraer de mi repositorio, olvidé ejecutar una compilación que extrae los paquetes requeridos de Nuget (ya que tengo Git / SVN ignorarlos también) y crea el DLL necesarios para ejecutar mi aplicación.

Dudo que esto resuelva los problemas de la mayoría de las personas, pero no lo vi en la lista de posibles soluciones, así que pensé en agregarlo.

Capitán Rochefort
fuente
1

En mi caso, había agregado Global.asax a un proyecto WCF para experimentar con él, pero decidí eliminarlo. Lo eliminé del Explorador de soluciones, pero debido a que todavía estaba en la carpeta, la canalización aún lo encontraba y causaba este error.

Eliminé Global.ASAX y GLobal.asax.cs del sistema de archivos y eso resolvió el error.

Frijoles
fuente
ESTO lo resolvió para mí, gracias, pero también me gustaría agregar para otros en el futuro que en mi caso nunca agregué Global.asax a mi proyecto. Pero como se mencionó aquí, los archivos global.asax y global.asax.cs estaban en mi sistema de archivos. Cuando los eliminé, el error desapareció.
stackonfire
1

Después de haber estado en el juego de desarrollo durante casi 20 años, esta castaña ha seguido atormentándome en múltiples proyectos.

Como tal, hoy, mientras experimentaba este mismo problema nuevamente, contra otro proyecto, decidí investigar más y creo que esto está relacionado con la ubicación de la carpeta Bin ... o más específicamente, la ruta de salida de la carpeta bin.

Para mí, para una aplicación web basada en un servicio simple configurada para ejecutarse / depurar a través de IIS, estaba cambiando la ruta de salida de bin \ debug a bin \ que lo resolvió

Proyecto> Propiedades> Generar> Ruta de salida

Espero de verdad que esto ayude.

tímidamente
fuente
0

Estaba aturdido por el mismo maldito problema. Traté de quitar y elglobal.asax (cerrado VS2010 antes de agregar). Limpió el proyecto / solución, verificó cualquier cambio en la configuración de la aplicación web y otras cosas que habían funcionado para otras personas aquí en SO hilos. Finalmente limpié la solución, eliminé las carpetas bin / obj y detuve cualquier servidor de desarrollo VS2010 en ejecución, luego revertí todos los cambios y descubrí que la aplicación se estaba ejecutando nuevamente. Rehice las mismas cosas y ahora funciona bien.

Sucedió de nuevo y esta vez esta solución funcionó para mí.

rabia
fuente
0

vaya al Administrador de configuración en las propiedades de su solución. Luego asegúrese de que todos los proyectos y la construcción, y esto no será un problema.

Matthew Hart
fuente
0

Tuve que eliminar (duplicar) archivos del disco que no estaban incluidos en el proyecto. Parece que los duplicados se debieron a un cambio de nombre fallido. Los nombres de los archivos eran diferentes, pero el mismo código.

Después de eliminar todos los archivos oof. *, Pude escanear.

  • foo.aspx
  • foo.aspx.cs
  • foo.aspx.designer.cs
  • oof.aspx
  • oof.aspx.cs
  • oof.aspx.designer.cs
Eric Rohlfs
fuente
0

en mi caso fue IISExpress apuntando al mismo puerto que IIS para resolverlo, vaya a

C:\Users\Your-User-Name\Documents\IISExpress\config\applicationhost.config

y busque el puerto, encontrará la <site>...</site>etiqueta que debe eliminar o comentar

Mo Hrad A
fuente
0

Tuve este problema al implementar solo en el servidor prod. En mis otros entornos funciona ... Simplemente eliminé cosas en la carpeta bin, luego las volví a publicar y funcionó después de eso.

Raphael
fuente
0

Si está utilizando Visual Studio, probablemente esté intentando ejecutar la aplicación en el modo de lanzamiento, intente cambiarlo al modo de depuración.

impostor
fuente
0

Intenté reconstruir la solución y borrar los archivos temporales de ASP.NET sin éxito.
Pero después de ejecutar IISRESET, el error desapareció.

Actualización : volví a tener el mismo problema 1 mes después. Me di cuenta de que MyWebsite.DLL existe en la carpeta bin, pero no existe en los archivos temporales ASP.NET (C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Archivos temporales ASP.NET). Probé algunas cosas, que se sugieren en esto y en el "Mensaje de error del analizador: no se pudo cargar el tipo" en las preguntas de Global.asax (en realidad me olvidé de mi propia respuesta), pero el error desapareció nuevamente solo después de IISRESET

Michael Freidgeim
fuente
0

Bueno, en mi caso VS 2017, la carga de la solución liviana estaba causando este problema. Lo desactivé y reinicié VS, luego reconstruí mi solución y el problema desapareció.

Siddharth Kumar
fuente
2
¿Qué es la solución "ligera"?
Fandango68
0

Solo quería agregar mis dos centavos. Recibí el mismo error e intenté todas las sugerencias sin éxito. ¿Mi situación probablemente sea diferente?

Resulta que un archivo "AssemblyInfo.cs" generado automáticamente tenía algunos espacios extraños, lo que me impedía iniciar la aplicación web (mediante depuración). Así es como se veía el archivo:

[assembly: AssemblyTitle("WebApplication2")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("

            ")]
[assembly: AssemblyProduct("WebApplication2")]
[assembly: AssemblyCopyright("Copyright © 

             2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

Después de eliminar los espacios en AssemblyCompany y AssemblyCopyright, finalmente pude construir y lanzar el proyecto.

Observado en el siguiente entorno: --Visual Studio 2017 Community versión 15.3.0 --Win 7 x64 Enterprise --Nuevo proyecto> Visual C #> Web> Aplicación web ASP.NET> Formularios web

raydlevel5
fuente