107 votes

"Impossible de charger le type [Namespace].Global" me cause des ennuis.

Dans mon application Asp.net WebForms 2.0, j'ai mon Global.asax qui contient le code suivant :

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

Cependant, lorsque je construis, j'obtiens une erreur indiquant

Impossible de charger le type 'MyNamespace.Global'.

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

Remarque : les fichiers Global.asax et Global.asax.cs sont situés dans le même dossier.

Note2 : Lorsque vous compilez à partir de l'invite vs avec csc, la compilation se fait sans problème.

0 votes

Les autres pages de l'application fonctionnent-elles ? Cela se produit parfois lorsque le serveur web est configuré pour fonctionner en 1.1 mais que l'application est compilée pour 2.0.

0 votes

Oui, "Target Framework" est 2.0.

162voto

stantona Points 1407

Une situation que j'ai rencontrée et qui a causé ce problème est lorsque vous spécifiez la plate-forme pour une construction par le biais de "Build Configuration".

Si vous spécifiez x86 comme plate-forme de construction, Visual Studio attribuera automatiquement bin/x86/Debug comme répertoire de sortie pour ce projet. Ceci est parfaitement valable pour les autres types de projets, à l'exception des applications web où ASP.NET s'attend à ce que les assemblages soient sortis dans le dossier Bin.

Ce que j'ai trouvé dans ma situation, c'est qu'ils étaient sortis dans les deux (Bin et Bin/x86/Debug), à l'exception de certaines dll, et inexplicablement la plus importante étant la dll de votre application web, qui était absente du dossier Bin.

Cela a évidemment causé un problème de compilation et donc l'exception "Could not load type Global". Le nettoyage de la solution et la suppression des assemblages n'ont fait aucune différence lors des constructions suivantes. Ma solution a été de changer le chemin de sortie dans les paramètres du projet pour l'application web en Bin (plutôt que bin/x86/Debug).

13 votes

Aussi : Essayez de fermer et de rouvrir VS. Si vous utilisez le serveur de débogage intégré, il se peut qu'il exécute un site web différent. L'ouverture/la fermeture réenregistrera les ports localhost.

1 votes

Dans mon cas, il voulait mettre la sortie du projet dans inetpub. \wwwroot\myproject\bin mais j'avais configuré iisexpress pour qu'il cherche dans monProjet \bin. Le simple fait de changer le chemin de sortie a résolu le problème.

0 votes

Dans mon cas, j'avais un fichier .dll qui aurait dû être inclus, mais qui n'était pas configuré pour copier localement pour une raison quelconque. Cela a causé un problème de compilation similaire à celui mentionné dans cette réponse.

18voto

PhilPursglove Points 9758

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

0 votes

Que pensez-vous que je doive faire ?

1 votes

Vérifiez l'espace de nom dans votre fichier .cs et assurez-vous qu'il est le même que celui déclaré dans le fichier asax. Je pense qu'ils sont différents...

0 votes

Je ne suis pas sûr alors. Tout ce que je peux vous suggérer pour l'instant est de reconstruire et de vérifier le contenu des espaces de noms dans votre assemblage avec ILDASM.

15voto

sri Points 79

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

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

public partial class Global : System.Web.HttpApplication

1 votes

Je ne sais pas pourquoi mon fichier Global n'avait pas été modifié, mais c'était le problème pour moi, merci !

3voto

jasonjonesutah Points 102

J'ai rencontré une erreur similaire lors d'une

<clear/>

en tant qu'enfant (le premier enfant) de la balise

<assemblies>

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

0 votes

Cela m'a définitivement orienté dans la bonne direction. En fin de compte, j'avais mis <clear/> dans le répertoire parent puisque c'était un espace vide. Je crois que le vrai problème était qu'il a effacé les assemblages auxquels mon application faisait référence, ce qui a empêché l'assemblage de l'application de se charger.

0 votes

J'ai également rencontré ce problème - supprimer explicitement les assemblages sélectionnés au lieu d'effacer la liste a bien fonctionné.

2voto

mezoid Points 10293

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

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

Ce qui a marché pour moi, c'est :

  • Cliquez à droite sur la solution et sélectionnez Configuration Manager
  • J'ai examiné chacune des configurations dans la liste déroulante "Configuration active de la solution".
  • Incluez l'application web dans la construction en cochant la case "Build".

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

J'espère que cette réponse aidera tous ceux qui ont le même problème...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X