web-dev-qa-db-fra.com

"Impossible de charger le type [Namespace] .Global", ce qui m'a causé des problèmes

Dans mon application .Net 2.0 Asp.net WebForms, mon fichier Global.asax contient le code suivant:

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

Cependant, lorsque je construis, j'obtiens une erreur

Impossible de charger le type 'MyNamespace.Global'.

Cela semble être dû au fait que l’espace de noms MyNamespace (défini dans le code situé derrière le fichier Global.asax.cs) n’est pas vu par le compilateur dans le fichier Global.asax (ne s'affiche pas dans R # intellisence ..) . être très difficile à résoudre ... toute aide sera appréciée!

Remarque: Global.asax et Global.asax.cs se trouvent dans le même dossier.

Note2: Lors de la compilation à partir de l'invite vs avec csc, il compile o.k. 

102
gkdm

Un problème que j'ai rencontré à l'origine de ce problème est lorsque vous spécifiez la plate-forme pour une génération via "Configuration de la construction". 

Si vous spécifiez x86 comme plate-forme de construction, visual studio affectera automatiquement bin/x86/Debug en tant que répertoire de sortie pour ce projet. Ceci est parfaitement valable pour d'autres types de projets, à l'exception des applications Web pour lesquelles ASP.NET s'attend à ce que les assemblys soient exportés dans le dossier Bin. 

Ce que j’ai trouvé dans ma situation, c’est qu’ils étaient en sortie (Bin et Bin/x86/Debug), à l’exception du fait que certaines des dll, et inexplicablement, le plus important étant votre dll d’application Web, manquant du Bin dossier.

Cela posait évidemment un problème de compilation et par conséquent l’exception "Impossible de charger le type Global". Le nettoyage de la solution et la suppression des assemblages n’ont aucune incidence sur les générations suivantes. Ma solution consistait simplement à modifier le chemin de sortie dans les paramètres de projet de l'application Web en Bin (plutôt que bin/x86/Debug). 

157
stantona

Avez-vous changé le namespace de votre projet? J'ai parfois vu cela se produire lorsque j'ai modifié l'espace de noms dans la boîte de dialogue Propriétés du projet mais que Visual Studio n'a pas modifié la déclaration namespace dans les fichiers de code existants.

16
PhilPursglove

Je suis nouveau dans le développement asp .net et j'ai fait face au même problème.

J'ai mis à jour la classe en tant que classe partial et cela a bien fonctionné.

public partial class Global : System.Web.HttpApplication
14
sri

J'ai redémarré Visual Studio et l'erreur a disparu!

9
Manoj Attal

En voici un autre pour les livres. Il semble que cela se produise lorsque vous lancez plusieurs applications Web à partir du même numéro de port.

En gros, j'ai quelques branches sur lesquelles je travaille, une branche principale, une branche intermédiaire et une branche de publication. Lorsque j'ai changé de succursale pour passer à la branche intermédiaire, j'ai constaté qu'elle utilisait la même configuration d'adresse de port et j'ai donc décidé de changer cela. J'ai ensuite reçu un autre avertissement indiquant que cette réservation était en conflit avec une autre application configurée. Le serveur IIS Express est sensible à cela et bloque la configuration pour une raison quelconque.

En choisissant simplement un troisième port non affecté, ce problème a disparu car il mappe ensuite le port sur un nouveau mappage de répertoires (mes branches sont situées différemment sur le disque). Je l’ai remarqué car j’ai essayé de modifier le nom du type indiqué par Global.asax, mais le nom du type n’a pas été modifié, même après le redémarrage du serveur. Le code que je changeais n’était donc pas reflété par le déploiement de IIS Express.

Par conséquent, avant de perdre trop de temps de sommeil, essayez de modifier le numéro de port IIS actuellement utilisé pour exécuter le projet Web.

4
John Leidegren
  1. Cliquez avec le bouton droit sur Solution de projet et sélectionnez Génération par lots.
  2. Sélectionnez ensuite le nom de votre projet, puis nettoyez et reconstruisez.

Fonctionne bien pour moi dans VS 2015.Now je peux utiliser l'événement global. Mon fichier Global.asax a cette ligne

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

Et je crée le fichier de classe Global.asax.cs qui se trouve dans le dossier AppCode qui ressemble à

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

J'espère que cela aidera

4
parimal

Dans mon cas, cela était lié au type de site Web/application Web du projet. Nous avons récemment migré vers MVC et avons dû le changer en application Web.

La solution était donc simple: sélectionnez votre site Web dans l'Explorateur de solutions et supprimez-le de la solution, puis cliquez avec le bouton droit sur la solution et sélectionnez Ajouter -> Projet existant ( pas un site Web ), recompilez le site Web. .

2
Sergey

Ancien post, mais je répète cette erreur en essayant de convertir un projet de site Web en projet d'application Web.

Suivez les instructions sur ce lien - Link . J'ai toujours l'erreur global.asax mais tout ce que j'ai fait est de la supprimer et de la rajouter en cliquant avec le bouton droit de la souris sur le projet dans Visual Studio et en sélectionnant Ajouter un nouvel élément. Ajoutez le fichier global.asax et cela a fonctionné.

2
mjroodt

J'avais converti ma solution de VS2003 en VS2010 et j'avais eu des problèmes pour convertir le projet d'application Web.

J'ai eu exactement le même problème et aucune des réponses n'a fonctionné pour moi.

Ce qui a fonctionné pour moi a été:

  • Cliquez avec le bouton droit sur la solution et sélectionnez Configuration Manager.
  • Examinez chacune des configurations dans la liste déroulante "Configuration de la solution active".
  • Incluez l'application Web dans la construction en cochant la case "Construire".

il semblerait que les problèmes que j'ai rencontrés lors de la conversion aient supprimé le projet d'application Web de la construction pour une raison quelconque.

Espérons que cette réponse aide tous ceux qui ont le même problème ...

2
mezoid

Vérifiez l'action de construction de Global.asax.cs. Il devrait être défini sur Compiler.

Dans l'Explorateur de solutions, cliquez avec le bouton droit sur Global.asax.cs et accédez à Propriétés. Dans le volet Propriétés, définissez l'action de construction (while not debugging).

Il semble que VS 2008 n’ajoute pas toujours correctement les fichiers .asax (.cs) par défaut.

2
apollodude217

J'ai eu une erreur similaire en ayant un 

<clear/>

tag comme un enfant (le premier enfant) de la 

<assemblies>

balise dans mon Web.config . J'avais inséré les balises dans mon web.config afin d'empêcher l'héritage de configuration dans une application déployée sous le site Web par défaut dans IIS.

2
jasonjonesutah

Cela fonctionne pour moi: La première chose: il semble que peu importe ce que vous avez dit à Visual Studio, l’ide regarde toujours le fichier dans: bin (pour une application Web et bien sûr dans mon cas) Donc, même quand j’ai dit Pour Visual Studio un chemin spécifique pour charger le fichier, l’ide continue de chercher le mauvais chemin. Donc, je change dans le: Build/Configuration Manager le type de sortie en: Version (précédent, je nettoie la solution, même manuellement). Ainsi, lorsque le fichier .dll a été créé, je me suis déplacé manuellement vers le dossier "bin" du projet/solution. dossier. J'espère que cela vous sera utile !!

1
galimatias

Malheureusement, rien de tout cela n'a fonctionné pour moi. Le correctif que j'ai trouvé était plus spécifique au développement, plus précisément au débogage sur votre ordinateur local. De plus, malheureusement, cela ne résout pas vraiment le problème que j'espérais, mais si vous êtes à bout de ressources, cela pourrait vous remettre à courir. 

TL; DR: dans les propriétés du projet, dans l'onglet Web, sous Serveurs, sélectionnez Utiliser le serveur Web local IIS. L'adresse, 

http://localhost/MyApp" 

était déjà rempli (j'ai IIS7, .NET 4.0). Ce qui avait été initialement sélectionné était "Utiliser le serveur de développement Visual Studio" avec un chemin virtuel "/"

Ce qui est vraiment déroutant pour moi, c'est le fait que rien d'autre ne fonctionne, j'ai passé en revue toutes les suggestions que j'ai pu trouver sur SO, et rien ne fonctionnerait. Ce qui est étrange, c’est que l’erreur s’est manifestée (il semble que cela fait quelques mois que j’ai regardé pour la dernière fois) lorsque j’ai ajouté un nouveau fichier ascx similaire à un fichier existant qui avait été ajouté à partir d’un ancien projet .net 2.0 (je pense). cela permettrait une gestion personnalisée des utilisateurs depuis l'application. Cela a fonctionné, magnifiquement, pendant longtemps, jusqu'à ce que j'essaie d'ajouter ce nouveau fichier. Après l'avoir ajouté et vu l'erreur, j'ai immédiatement annulé tous les changements, mais l'erreur Global.ascx ne disparaîtrait pas, sans même détruire tout le projet et récupérer les dernières informations du contrôle de source. 

1
BrDaHa

Si vous reconstruisez ou modifiez un projet et déplacez les fichiers d'un ancien, vérifiez le bloc Hériter de votre global. Dans mon cas, l'ancien projet/solution s'appelait intranet, et je l'avais recréé en tant qu'intranet, mais lorsque j'ai déplacé les fichiers, il n'aimait pas les minuscules. Il suffit de faire une recherche générale des noms de fichiers.

1
archangel76

Dans mon cas, c’est à cause de mon processeur cible (x64) que je l’ai changée en x86 nettoyé le projet, redémarré VS (2012) et reconstruit le projet; alors il était parti.

1
notmrkyle

Changez le GUID de l’Assemblée. Cela corrige de nombreux problèmes, j'ai trouvé. 

1
Nathan M

J'ai eu des problèmes similaires où je recevais cette erreur sur un projet. 

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

Après avoir passé un certain temps, je soupçonne une fonction avec des erreurs possibles dans une classe.

Je ne sais pas pourquoi Visual Studio ne m'a pas donné cette erreur spécifique au moment du débogage. Mais cette erreur peut se produire en raison de certaines erreurs dans le fichier de classe.

1
panky sharma

Lorsque j'ai rencontré ce problème le plus récemment, j'ai tout essayé, mais en vain. Après avoir arraché mes cheveux, j'ai décidé d'essayer de supprimer ma base de code entière (oui, plutôt désespérée!), Puis de tout télécharger à nouveau de mon référentiel de code. Après cela, tout a bien fonctionné une fois de plus.

Cela semble être une solution extrême, mais je pensais l'inclure ici car elle n'a pas été mentionnée auparavant dans ce fil.

(Notez que l'autre fois que j'ai rencontré ce problème, c'est lorsque Global.asax héritait d'un composant qui devait être enregistré sur la machine hôte. C'était manquant, d'où le même problème).

TL; DR; Si toutes les réponses dans ce fil ne fonctionnent pas pour vous, essayez de supprimer puis de télécharger à nouveau votre base de code entière!

1
Ben Smith

Dans mon cas, j'avais ajouté Global.asax à un projet de la WCF pour l'expérimenter, mais j'avais décidé de le supprimer. Je l'ai supprimé de l'Explorateur de solutions, mais comme il se trouvait toujours dans le dossier, le pipeline le recherchait toujours et causait cette erreur.

J'ai supprimé les fichiers Global.ASAX et GLobal.asax.cs du système de fichiers et cela a résolu l'erreur.

1
Beans

J'ai rencontré ce problème à quelques reprises et dans chaque cas, je reconstruisais un ordinateur ou basculais sur un nouvel ordinateur. Ma première étape (outre la mise à jour de la machine et l'installation de Visual Studio) consiste à extraire mes projets de Git et à les tester.

J'ai frappé cette erreur à chaque fois parce que j'ai essayé d'accéder à mon code local avant de le compiler. Vous voyez, j’ai la configuration Git et Subversion pour ignorer mes dossiers bin/build, donc après une extraction de mon référentiel, j’ai oublié de lancer une construction qui extrait les paquets requis de Nuget Les DLL nécessaires pour exécuter mon application.

Je doute que cela résoudra les problèmes de la plupart des gens, mais je ne l'ai pas vu dans la liste des solutions potentielles et j'ai donc pensé l'ajouter.

1
Capt. Rochefort

J'ai essayé de reconstruire la solution et d'effacer les fichiers temporaires ASP.NET sans succès.
Mais après avoir exécuté IISRESET, l'erreur a disparu. 

Update: J'ai eu le même problème un mois plus tard. J'ai remarqué que MyWebsite.DLL existe dans le dossier bin, mais pas dans les fichiers temporaires ASP.NET (fichiers C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET) . J'ai essayé quelques choses suggérées à ce sujet et "Message d'erreur du parseur: impossible de charger le type" dans Global.asax questions (j'ai en fait oublié ma propre réponse), mais l'erreur a disparu à nouveau seulement IISRESET 

0
Michael Freidgeim

accédez au gestionnaire de configuration sous Propriétés de votre solution. Ensuite, assurez-vous que tous les projets sont en cours de construction et ne seront pas un problème.

0
Matthew Hart

Ayant été dans le jeu du développement pendant presque 20 ans, cette châtaigne a continué à me tourmenter à travers de multiples projets.

En tant que tel, aujourd’hui, alors que je rencontrais ce même problème contre un autre projet, j’ai décidé d’enquêter davantage et j’estime que cela est lié à l’emplacement du dossier Bin ... ou plus précisément au chemin de sortie du dossier bin.

Pour moi, pour une application Web basée sur un service simple et configurée pour exécuter/déboguer via IIS, elle modifiait le chemin de sortie de bin\debug en bin\qui le résolvait. 

Projet> Propriétés> Construire> Chemin de sortie

Sérieusement espère que cela aide.

0
timkly

J'ai eu ce problème lors du déploiement sur le serveur de prod uniquement. Dans mes autres environnements, cela fonctionne ... Je viens de supprimer des éléments dans le dossier bin, puis de les republier, puis cela fonctionne.

0
Raphael

Le même problème me laissait perplexe. J'ai essayé de supprimer et et le global.asax (fermé VS2010 avant d'ajouter). Nettoyé le projet/la solution, vérifié la présence de modifications dans la configuration de l'application Web et d'autres éléments ayant fonctionné pour d'autres personnes ici dans les threads SO. J'ai finalement nettoyé la solution, supprimé les dossiers bin/obj et arrêté tous les serveurs de développement VS2010 en cours d'exécution, puis j'ai annulé toutes les modifications et constaté que l'application fonctionnait à nouveau. J'ai refait les mêmes choses et maintenant ça fonctionne bien.

Arrivé à nouveau et cette fois ceci solution a fonctionné pour moi.

0
rageit

J'ai rencontré ce problème lorsque j'ai accidentellement défini "Chrome" comme navigateur par défaut pour le débogage. Quand je l'ai remis à "IE", le problème a disparu. Je ne suis pas sûr pourquoi... 


EDIT: J'étais sur le point de supprimer cette réponse, car je n'étais pas sûr de cela, mais j'ai eu à nouveau le problème. Je suis passé à la navigation avec Chrome, puis à nouveau sur IE et tout s'est arrêté! Ce qui donne!? 

0
Fedor Steeman

Je voulais juste ajouter mes deux cents. Je recevais la même erreur et j'ai essayé toutes les suggestions en vain. Ma situation est probablement différente?

Il s'avère que le fichier "AssemblyInfo.cs" généré automatiquement comporte des espaces superflus, ce qui m'empêche de lancer l'application Web (via le débogage). Voici à quoi ressemble le fichier:

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

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

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

Après avoir supprimé les espaces dans AssemblyCompany et AssemblyCopyright, j'ai enfin pu construire et lancer le projet.

Observé dans l'environnement suivant: -- Communauté de Visual Studio 2017 version 15.3.0 -- Win 7 x64 Enterprise -- Nouveau projet> Visual C #> Web> Application Web ASP.NET> Formulaires Web

0
raydlevel5

dans mon cas, c’était IISExpress pointant sur le même port que IIS. 

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

et recherchez le port, vous trouverez le tag <site>...</site> que vous devez supprimer ou commenter.

0
Mo Hrad A

Eh bien, dans mon cas, VS 2017, la charge de solution légère était à l'origine de ce problème. Je l'ai désactivé et redémarré le VS, puis j'ai reconstruit ma solution et le problème est parti.

0
Siddharth Kumar

Si vous utilisez Visual Studio, vous essayez probablement d'exécuter l'application en mode Publication, essayez de la changer en mode débogage.

0
sham

J'ai dû supprimer (dupliquer) des fichiers du disque qui n'étaient pas inclus dans le projet. On dirait que les doublons ont été causés par un renommage échoué. Les noms de fichiers étaient différents, mais le même code.

Après avoir supprimé tous les fichiers oof. * Que j’ai pu analyser. 

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

Aussi bête que cela puisse paraître. Voici ce que j'ai fait..

Mon projet ciblait la version 4.6.1 . Changement de la version cible en 4.6.2 l'a construit. Suppression des dossiers obj et bin. & encore une fois changé la version en 4.6.1. Bingo !!

0