Erreur: «Impossible de charger le type MvcApplication»

241

Je reçois l'erreur

Impossible de charger le type MvcApplication

lorsque j'essaie de lancer mon site Web.

Comment le corriger?

Gil
la source
35
J'ai eu cette erreur au hasard un jour sur notre serveur de build. faire une reconstruction manuelle l'a résolu.
Zack
1
Le chemin de sortie est défini dans les propriétés du projet sur l'onglet de
génération
8
supprimez le fichier global.asax et ajoutez-en un nouveau, et tout ira bien.
DotNetGeek
4
Il s'avère que le nouveau projet n'a pas été sélectionné dans la configuration active pour la construction.
JGeerWM
4
Si vous avez récemment ajouté le projet ou si vous avez récemment modifié la configuration de publication (c'est-à-dire que vous êtes passé d'AnyCPU à x64), il se peut que le projet ne soit pas généré lorsque vous l'exécutez. Allez dans BUILD-> CONFIGURATION MANAGER et vérifiez que la colonne de construction a la case cochée. Je viens d'avoir ce problème maintenant Vous remarquerez également que vos points d'arrêt sont des cercles clairs lors de l'exécution de l'application. Je pense que c'est le résultat de la construction par défaut de .net 4.5.1 sur l'architecture de processeur favorisant 32 bits. Un problème uniquement si vous cochez x64
David Bridge

Réponses:

115

Aussi stupide que cela puisse paraître, a tout essayé et cela n'a pas fonctionné et a finalement redémarré VS2012 pour le voir fonctionner à nouveau.

gurrawar
la source
1
LMFAO, a travaillé pour moi aussi après avoir essayé tout ce qui est mentionné ici et n'a pas fonctionné! Merci et +1!
Yustme
Même problème ici. L'erreur est apparue après une fusion et ne disparaîtrait pas avant le redémarrage de VS2012.
StuartQ
1
Pour moi, ce qui aurait pu arriver, c'est que le port a été utilisé par une deuxième instance de Visual Studio qui n'avait pas compilé le projet.
Clay Lenhart
A également fonctionné pour moi. Quelle décharge.
PAWAN RAJ Shakya
5 ans plus tard VS2017 et c'est toujours la solution. : /
Sagiv bg
105

-Pour moi, le correctif consistait à changer le chemin de sortie dans l'onglet build. J'ai changé le chemin de sortie en bin\et l'erreur a disparu.

-Une autre solution pourrait être que vous avez le mauvais ensemble de projets de démarrage.

bob nouveau
la source
8
C'était aussi notre problème. Il avait été précédemment défini sur quelque chose comme Debug \ x86 \ bin
t3rse
4
HA! C'est la deuxième fois en deux ans que je suis allé à cet article avec ce problème, la première fois c'était la première réponse, la deuxième fois c'était cette réponse.
Ben Lesh
1
Merci! Cela m'a mordu aussi. J'avais changé la plate-forme pour effacer certains avertissements, et le chemin de sortie a été changé sans que je le sache.
camainc
6
C'était la bonne réponse pour moi ... Une idée de pourquoi Visual Stupido se comporte de cette façon?
andreapier
1
Ouais, c'était ça. Changer pour `bin` fait que tout fonctionne comme prévu. @andreapier: Oui, VS2012 semble également se comporter de cette façon stupide. Quelqu'un le réparer dès que possible! :)
maintenant celui qui ne doit pas être nommé.
82

J'obtenais la même erreur et malgré tout ce qui était mentionné ici et ailleurs, rien ne fonctionnait. Il s'est avéré que j'avais copié le code source de global.asax.cs d'une version précédente du projet qui avait un nom différent. Donc, cela namespace Testaurait dû être namespace Test.WebUI. Une erreur stupide bien sûr et je suis un peu gêné d'écrire ceci! Mais en écrivant dans l'espoir qu'une erreur similaire de quelqu'un d'autre puisse le conduire à vérifier également cet aspect trivial.

Vipul
la source
Merci, Vipul. Je viens de faire la même chose et je pensais que j'avais perdu beaucoup de travail en conséquence. Le simple changement du nom de l'espace de noms a sauvé mon bacon
xiecs
2
Je viens de faire la même chose. J'ai ouvert Global.asax dans un éditeur de texte et corrige le problème d'espace de noms. Merci
Kayvan Karim
6
Je viens de faire la même chose. Juste pour élaborer pour quelqu'un d'autre: à l'origine, j'avais un projet de test appelé "MvcApplication1" qui a été créé automatiquement. J'ai ensuite fait un remplacement global de l'espace de noms "MvcApplication" en "MyTest". Dans le Global.asax dans le bloc-notes, je devais ensuite passer à Inherits = "MyTest.MvcApplication"
PabloInNZ
S'il y avait un moyen de donner de l'or, je le ferais
shanabus
53

Faites simplement une compilation manuelle de votre solution.

Si vous utilisez IIS local, essayez de supprimer l'enregistrement du site Web dans le gestionnaire IIS, puis de le recréer manuellement.

Peter Morris
la source
C'était gagnant pour moi, j'avais abandonné le site du dépôt et mis en place iis, mais je n'ai jamais fait de build dans IIS
Anthony Main
31

[Extrait de la question]

Si vous obtenez cette erreur: "Impossible de charger le type MvcApplication", examinez le chemin de sortie de votre projet et assurez-vous qu'il est défini sur "bin \". Le problème est que l'AspNetCompiler ne peut pas trouver les fichiers s'ils ne se trouvent pas à l'emplacement par défaut.

Un autre effet secondaire de la modification du dossier de sortie est que vous ne pourrez pas déboguer votre code et un message indiquant que les informations d'assembly sont introuvables.

StingyJack
la source
1
Cela semble un peu étrange quand normalement il est séparé entre les différentes configurations de construction.
nicodemus13
Par défaut, il est séparé, mais beaucoup de gens les changent en un seul dossier afin que la version et le débogage soient au même emplacement pour un projet différent qui référence la sortie (installateurs, etc.).
StingyJack
Je me demande si ce problème est propre à IIS Express. Quoi qu'il en soit, la raison pour laquelle je l'ai découvert est parce qu'il est juste vissé sur l'un de nos nouveaux démarreurs: j'avais changé binpour bin\Debuget bin\Releasemais les anciens fichiers étaient toujours dans mon bindossier, donc je n'avais vu aucun problème. Bien sûr, si vous effectuez un check-out propre et créez ces fichiers n'existent pas pour vous, il explose.
Bart Lire le
15

J'ai eu le même problème et l'ai résolu avec les étapes ci-dessous

  1. Accéder aux propriétés du projet
  2. Dans l'onglet "Build", définissez le chemin de sortie sur "bin \"
UN B
la source
1
Merci beaucoup pour cela, cela a résolu un problème que je rencontrais avec des points d'arrêt non définis!
Chris
C'est ce qui a fonctionné pour moi. Je l'ai découvert par moi-même mais merci quand même.
Alexandre
Merde! Cela sauve une journée.
ske
14

Ahh c'était ennuyeux.

Vous avez cette erreur après une coupure de courant et je suis retourné à mon projet.

J'ai essayé de redémarrer VS. J'ai essayé de définir le chemin de sortie sur \ bin. J'ai vérifié mes espaces de nom.

Mais ce qui a fonctionné pour moi, c'était de reconstruire la solution.

Reconstruire la solution !!!

Pomster
la source
13

Ma solution: parce que j'ai créé le problème! J'avais changé l'espace de noms dans Global.asax.cs

Vous devez également modifier la valeur de l'attribut Inherits dans Global.asax.

mkaj
la source
3
Moi aussi, j'ai eu ce problème. Je souhaite que Visual Studio refactorise les espaces de noms dans les attributs hérités du balisage - ainsi que les classes.
csharpforevermore
Pareil ici. Lorsque vous renommez des espaces de noms, assurez-vous de déplacer-alt-F10, ou faites un clic droit pour renommer et cela mettra à jour toutes les instances pour vous.
Rob
Cela a fonctionné pour moi, mais il était difficile de trouver où mettre en œuvre la solution. J'ai fait une «recherche de tous» pour accéder au fichier Global.asax parce que lorsque vous double-cliquez sur Global.asax dans l'éditeur Visual Studio, vous obtenez le fichier Global.asax.cs qui est en fait le code derrière le fichier .asax. Notez l'extension .cs. Donc: CTRL-F et recherchez Global.asax (sans .cs) et modifiez l'héritage pour qu'il corresponde à votre espace de noms.
GerardV
9

Vérifiez le code derrière les informations, fournies dans global.asax. Ils doivent pointer correctement vers la classe dans son code derrière.

exemple global.asax:

<%@ Application Codebehind="Global.asax.cs" Inherits="MyApplicationNamespace.MyMvcApplication" Language="C#" %>

exemple de code derrière:

   namespace MyApplicationNamespace
    {
        public class MyMvcApplication : System.Web.HttpApplication
        {
            protected void Application_Start( )
            {
                AreaRegistration.RegisterAllAreas( );
                FilterConfig.RegisterGlobalFilters( GlobalFilters.Filters );
                RouteConfig.RegisterRoutes( RouteTable.Routes );
                BundleConfig.RegisterBundles( BundleTable.Bundles );
            }
        }
    }
Farshid Saberi
la source
7
  1. Cliquez avec le bouton droit sur le projet dans la solution qui échoue.
  2. Décharger le projet
  3. Projet de rechargement
  4. Projet de construction
  5. Solution de reconstruction
JoshYates1980
la source
5

Cela peut également se produire lors de l'exécution du projet dans Visual Studio si votre IIS Express a / héberge un projet ancien / différent utilisant la même affectation de port.

Pour résoudre ce problème, vous pouvez modifier l'attribution de port pour ce projet ou fermer IIS Express.

StingyJack
la source
5

Si vous hébergez dans IIS express et que vous ouvrez votre projet dans deux emplacements différents, vous pouvez voir cette erreur.

La solution est d'aller sur Project/Properties/Web/Serverset de cliquer Create Virtual Directory.

Steve Dunn
la source
4

La solution pour moi était de cliquer avec le bouton droit sur le projet Mvc, de choisir les propriétés et de cliquer sur Créer un répertoire virtuel.

Une boîte de message est apparue indiquant que le projet a été mappé sur le mauvais dossier (il a montré le dossier d'un autre projet TFS . Il a donné la possibilité de le mapper vers le dossier correct.

Will Newton
la source
1
Merci pour l'astuce, la cause pour moi était que j'ai récemment relocalisé tfs. J'avais besoin de démapper le dossier de solution et de le mapper à nouveau pour faire fonctionner l'application!
adhie
4

j'ai déjà eu bin/ dans mon onglet de construction. J'ai obtenu global.asax d'une autre copie du projet, mais cela n'a pas fonctionné.

La solution qui a finalement fonctionné pour moi a été de supprimer le bin/dossier et de créer un nouveau dossier vide du même nom.

zaydev
la source
1
Cela ne fournit pas de réponse à la question. Pour critiquer ou demander des éclaircissements à un auteur, laissez un commentaire sous son article - vous pouvez toujours commenter vos propres articles, et une fois que vous aurez une réputation suffisante, vous pourrez commenter n'importe quel article .
JLRishe
@brasofilo J'aurais pu faire le mauvais appel, mais étant donné le grave manque d'informations dans la question d'origine, il est fort probable que ce ne soit pas la solution au problème d'OP, et cette réponse est suffisamment courte pour pouvoir être ajoutée en tant que commentaire. D'un autre côté, la question d'origine a été publiée il y a longtemps et il y a une tonne de réponses "c'est ce qui a fonctionné pour moi" ici, donc c'est un appel difficile. Cette question et ses réponses peuvent nécessiter un nettoyage.
JLRishe
@JLRishe, eh bien, oui, c'est un gâchis de questions et réponses. Cette réponse peut même être le double de la deuxième note la plus élevée, mais je ne suis pas sûr. Je signalerai le Q demandant un verrou de 10rep minimum.
brasofilo
4

Je sais qu'il y a déjà beaucoup de solutions à cela, mais j'ai pensé que je mentionnerais simplement ce qui l'a résolu pour moi.

Ma configuration a été définie sur Debug. Le changer en Release a fait l'affaire pour moi.

Amanda
la source
2
Changé pour libérer et cela a fonctionné ... changé de nouveau pour déboguer et il a continué à fonctionner ... merci.
Paul Zahra
3

J'obtenais cette erreur car j'exécutais le projet malgré quelques erreurs de compilation. Je ne l'ai pas remarqué.

Gautam Jain
la source
Je n'ai pas remarqué parce que la liste d'erreurs de bleepity-bleep disait que c'était HEUREUX !!!! Je vous remercie.
CindyH
3

Supprimez le contenu du dossier bin du site (utilisez l'explorateur de fichiers pour cela). Reconstruire.

Malcolm Swaine
la source
3

Je suis tombé là-dedans. J'ai lu et testé toutes les solutions possibles qui ont été données auparavant. Vérifier le chemin de génération, construire, reconstruire, nettoyer, redémarrer IIS et VS2015, réinstaller tous les packages de nuget, les compiler un par un, etc., ...

Je me suis soudain souvenu que VS conserve certains fichiers temporaires ASP dans les dossiers système ... Je pense que je devrais essayer, après tout, cela ne pourrait pas empirer. J'ai donc vidé:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files

Et tout fonctionne à nouveau ... Bizarre que ce problème ait des solutions si différentes ...

junte
la source
3

Je l'ai vu plusieurs fois au cours de la dernière décennie et je l'ai encore eu. De nombreux problèmes entraînent la même erreur.

Une cause est un changement de nom des fichiers. Si vous travaillez avec des fichiers .cshtml, vérifiez tous les espaces de noms dans ces fichiers et dans le fichier Views \ web.config. Pour les formulaires Web, renommez Default.aspx (les fichiers .cs et designer associés sont automatiquement renommés). Le code derrière change mais pas la ligne Hérits dans le balisage. Modifiez-le manuellement. Vérifiez la page du concepteur. Parfois (VS2005-8?), La page du concepteur ne reflète pas un changement dans l'espace de noms. Je n'ai pas vu cela en 2010+.

Un autre problème est quand tout fonctionne dans VS ou sur votre PC local mais pas lorsque vous déployez. Cela peut être dû au fait que l'environnement de déploiement n'est pas structuré de la même manière. Par exemple, l'erreur se produit si vous placez votre code dans un répertoire virtuel sous un dossier d'application, mais elle ne se produit pas si vous créez un nouveau dossier d'application et placez tous vos fichiers dedans. Je ne comprends pas celui-ci, car j'ai le nouvel ensemble enfant / dossier virtuel avec les mêmes autorisations (ou du moins je pense) et (je crois) le pool d'applications devrait fonctionner de la même manière pour tout dans un dossier d'application donné.

Dans mon cas, j'ai également eu un dossier bin avec des assemblys qui sont mis à jour à partir d'autres assemblys sur le serveur IIS. Encore une fois, la vérification de leur exécution dans un dossier d'application distinct a abouti.

HTH

TonyG
la source
2

J'obtiens ce problème chaque fois que j'enregistre un fichier qui est compilé dynamiquement (ascx, aspx, etc.). J'attends environ 8-10 secondes puis ça s'en va. C'est terriblement ennuyeux.

Je pensais que c'était peut-être un problème IIS Express, j'ai donc essayé sur le serveur de développement intégré et je le reçois toujours après avoir enregistré un fichier. J'utilise une application MVC, j'utilise également T4MVC, c'est peut-être un facteur ...

Sam
la source
2

J'ai eu cette erreur frustrante dans l'environnement de développement dans Visual studio, et il s'est avéré que la raison était assez stupide. En bref, si vous avez plusieurs projets / sites Web en solution: assurez-vous que le port auquel vous essayez d'accéder au site Web est le même que celui configuré dans les propriétés du projet-> Web

Dans mon cas, l'erreur a été causée parce que j'utilisais un autre port pour accéder au site Web (dans le navigateur) tandis que le projet en solution se voyait attribuer un autre port. Pour expliquer un peu plus, j'ai eu deux projets de site Web dans ma solution Website1 (port affecté 8001 dans ISS par Visual-Studio) et Website2 (attribué port 8101 dans ISS par Visual-Studio). Donc, même si je construisais Website1, j'essayais d'accéder au site Web en utilisant locahost: 8101.

Maintenant que j'ai finalement réalisé le problème, je vois que le commentaire de @ StingyJack traite également du problème similaire.

mmmMAC
la source
2

Assurez-vous que l'espace de noms dans votre global.asax.cs correspond à l'espace de noms de votre webapp

Solutions IndieTech
la source
2

J'ai eu à nouveau cette erreur et rien de ce qui précède n'a fonctionné pour moi. Je devais retirer le noeud suivant dans .csproj: <VisualStudio>....</VisualStudio>. VS rechargé et cela a fonctionné.

Pour info, VS a réussi à recréer le nœud, puis j'ai recréé le site Web dans IIS (via VS) et cela a parfaitement fonctionné.

J'espère que cela aidera quelqu'un.

Rob
la source
1

Assurez-vous que vous ne devriez pas avoir à ouvrir le projet MVC comme Fichier-> Ouvrir le site Web, utilisez plutôt Fichier-> Ouvrir le projet .

Awk
la source
1

Ce qui a fonctionné pour moi, c'est le redémarrage de Visual Studio.

J'ai essayé de reconstruire manuellement, d'effectuer un nettoyage et une reconstruction, et de supprimer le dossier bin qui n'a pas fonctionné. Mon chemin de sortie était déjà défini sur bin \

Johnie Karr
la source
J'ai effectué une reconstruction au niveau de la solution, mais j'ai remarqué que le dossier bin de mon projet était vide. J'ai fait un build uniquement sur le projet et soudainement j'ai eu un dossier bin rempli. J'ai lancé le projet et cela a fonctionné.
MrBoJangles
1

Si vous avez modifié un espace de noms, assurez-vous de faire un clic droit et de refactoriser.

rocktheartsm4l
la source
1

Cela peut se produire très souvent si vous modifiez votre espace de noms. Renvoyez le nom de votre espace de noms, comme il l'était auparavant, et cela devrait le faire fonctionner!

user3576116
la source
1

Dans certaines circonstances, les nouveaux projets que vous créez ne sont pas définis par défaut pour être créés. Si vous cliquez avec le bouton droit sur votre solution, choisissez Properties, puis choisissez le Configuration Properties| Configurationnœud sur la gauche et assurez-vous que votre projet a une coche sous leBuild colonne. Dans des circonstances normales, j'ai trouvé que cela se produit par défaut. Dans d'autres circonstances (il se trouve que j'ai une solution Web Api / Xamarin Android et iOS / Mvc 5 quelque peu complexe qui présente ce comportement), la coche n'est pas présente.

Ceci est lié aux autres réponses - si l'assembly de votre projet web n'est pas disponible, vous obtenez cette erreur. Mais cela pourrait être un scénario courant, d'autant plus que vous compilez en fait votre solution - le projet n'est tout simplement pas construit.

Kirk Woll
la source
1

J'ai eu cette erreur car mon contrôle de version avait été configuré pour ignorer mon dossier bin . Très stupide, mais peut-être que quelqu'un d'autre en bénéficiera.

Brent Wagoner
la source
1
Ne voudriez-vous pas ignorer le dossier bin, ainsi que obj et d'autres choses qui sont construites et ne font pas partie du code source?
MrBoJangles
Normalement, oui. Mais sur ce site particulier, c'était le seul moyen de pousser des éléments vers le serveur. J'aurais probablement dû rendre ma réponse plus générique.
Brent Waggoner
Je reçois totalement les trucs de circonstances spéciales comme ça.
MrBoJangles
1

J'ai rencontré ce problème et je vois là toutes sortes de réponses mais rien n'a été accepté. Après un petit moment, j'ai découvert que la simple création du site Web avant d'essayer de résoudre avait résolu mon problème.

webternals
la source