Errore: «Impossibile caricare il tipo MvcApplication»


240

Ricevo l'errore

Impossibile caricare il tipo MvcApplication

quando provo a gestire il mio sito Web.

Come correggerlo?


35
Ho ricevuto questo errore in modo casuale un giorno sul nostro server di build. facendo una ricostruzione manuale risolto.
Zack,

1
Il percorso di output è impostato nelle proprietà del progetto nella scheda build
silasdavis

8
cancella il file global.asax e aggiungine uno nuovo, e starai bene.
DotNetGeek l'

4
Si scopre che il nuovo progetto non è stato selezionato nella configurazione attiva per la compilazione.
JGeerWM,

4
Se hai aggiunto di recente il progetto o se hai modificato di recente la configurazione di pubblicazione (ovvero passato da AnyCPU a x64), è possibile che il progetto non sia stato creato durante l'esecuzione. Vai su BUILD-> CONFIGURATION MANAGER e seleziona la casella di controllo nella colonna build. Ho appena avuto questo problema ora Noterai anche che i tuoi punti di interruzione sono chiari cerchi durante l'esecuzione dell'applicazione. Penso che questo sia il risultato della build predefinita per .net 4.5.1 sull'architettura del processore che favorisce 32 bit. Solo un problema se controlli x64
David Bridge il

Risposte:


115

Per quanto sembri stupido, ha provato di tutto e non ha funzionato e infine riavviato VS2012 per vederlo funzionare di nuovo.


1
LMFAO, ha funzionato anche per me dopo aver provato tutto quanto menzionato qui e non ha funzionato! Grazie e +1!
Yustme,

Lo stesso problema qui. L'errore è apparso dopo un'unione e non sarebbe scomparso fino al riavvio di VS2012.
StuartQ,

1
Per me, ciò che sarebbe potuto accadere è che la porta è stata utilizzata da una seconda istanza di Visual Studio che non ha compilato il progetto.
Clay Lenhart,

Ha funzionato anche per me. Che discarica.
PAWAN RAJ Shakya,

5 anni dopo VS2017 e questa è ancora la soluzione. : /
Sagiv bg

105

-Per me, la correzione era cambiare il percorso di output nella scheda build. Ho cambiato il percorso di output in bin\e l'errore è andato via.

-Un'altra soluzione potrebbe essere che hai impostato il progetto di avvio sbagliato.


8
Anche questo era il nostro problema. In precedenza era stato impostato su qualcosa come Debug \ x86 \ bin
t3rse il

4
HA! Questa è la seconda volta in due anni che sono stato a questo articolo con questo problema, la prima volta è stata la risposta migliore, la seconda volta è stata questa risposta.
Ben Lesh,

1
Grazie! Anche questo mi ha morso. Avevo modificato la piattaforma per chiarire alcuni avvisi e il percorso di output è stato modificato senza che me ne accorgessi.
camainc,

6
Questa è stata la risposta giusta per me ... Qualche idea sul perché Visual Stupido si sta comportando in questo modo?
andreapier,

1
Sì, era così. Passare a `bin` fa funzionare tutto come previsto. @andreapier: Sì, anche VS2012 sembra comportarsi in modo stupido. Qualcuno lo risolva al più presto! :)
ora colui che non deve essere nominato.

82

Stavo ottenendo lo stesso errore e nonostante il fatto di aver fatto tutto ciò che è stato menzionato qui e altrove, nulla ha funzionato. Si è scoperto che avevo copiato il codice sorgente di global.asax.cs da una versione precedente del progetto che aveva un nome diverso. Quindi namespace Testavrebbe dovuto essere namespace Test.WebUI. Un errore sciocco ovviamente e sono un po 'imbarazzato a scrivere questo! Ma scrivendo nella speranza che un errore simile da parte di chiunque altro possa portarlo a controllare anche questo aspetto banale.


Grazie Vipul. Ho appena fatto la stessa cosa e ho pensato di aver perso molto lavoro di conseguenza. La semplice modifica del nome dello spazio dei nomi ha salvato il mio bacon
xiecs

2
Ho appena fatto la stessa cosa. Ho aperto Global.asax in un editor di testo e risolto il problema dello spazio dei nomi. Grazie
Kayvan Karim

6
Ho appena fatto la stessa cosa. Solo per elaborare per chiunque altro: originariamente avevo un progetto di test chiamato "MvcApplication1" che è stato creato automaticamente. Ho quindi effettuato una sostituzione globale dello spazio dei nomi "MvcApplication" in "MyTest". Nel Global.asax nel blocco note dovevo passare a Inherits = "MyTest.MvcApplication"
PabloInNZ

Se ci fosse un modo per dare l'oro, lo farei
shanabus il

53

Basta fare un build manuale sulla tua soluzione.

Se si utilizza IIS locale, provare a eliminare la registrazione del sito Web in Gestione IIS e quindi ricrearla manualmente.


Questo è stato il vincitore per me, avevo lasciato il sito dal repository e ho creato IIS, ma non ho mai fatto una build in IIS
Anthony Main,

31

[Estratto dalla domanda]

Se ricevi questo errore: "Impossibile caricare il tipo MvcApplication", osserva il percorso di output del tuo progetto e assicurati che sia impostato su 'bin \'. Il problema è che AspNetCompiler non è in grado di trovare i file se non si trovano nella posizione predefinita.

Un altro effetto collaterale della modifica della cartella di output è che non sarà possibile eseguire il debug del codice e viene visualizzato un messaggio che informa che non è possibile trovare le informazioni di Assembly.


1
Questo sembra un po 'strano quando normalmente è separato tra le diverse configurazioni di build.
nicodemus13

Di default è separato, ma molte persone li cambiano in una singola cartella in modo che il rilascio e il debug si trovino nella stessa posizione per un progetto diverso che fa riferimento all'output (programmi di installazione, ecc.).
StingyJack,

Mi chiedo se questo problema sia peculiare di IIS Express. In ogni caso, la ragione ho capito è perché è solo avvitato su uno dei nostri nuovi antipasti: avevo cambiato binper bin\Debuge bin\Releasema i vecchi file sono stati ancora nella mia bincartella in modo non avevo visto alcun problema. Naturalmente, se fai un checkout pulito e compili questi file non esistono per te, quindi esplode.
Bart Leggi il

15

Ho avuto lo stesso problema e risolto con i passaggi seguenti

  1. Vai alle proprietà del progetto
  2. Nella scheda "Build", imposta il percorso di output su "bin \"

1
Grazie mille per questo, ha risolto un problema che avrei avuto con i punti di interruzione non impostati!
Chris,

Questo è ciò che ha funzionato per me. L'ho scoperto da solo, ma grazie comunque.
Alexandre,

Merda santa! Questo fa risparmiare un giorno.
ske

14

Ah, questo è stato fastidioso.

Ho ricevuto questo errore dopo un'interruzione di corrente e sono tornato al mio progetto.

Ho provato a riavviare VS. Ho provato a impostare il percorso di output su \ bin. Ho controllato i miei spazi dei nomi.

Ma ciò che ha funzionato per me è stata ricostruire la soluzione.

Ricostruisci la soluzione !!!


13

La mia soluzione: perché ho creato il problema! Avevo cambiato lo spazio dei nomi in Global.asax.cs

È inoltre necessario modificare il valore dell'attributo Inherits in Global.asax.


3
Anch'io ho avuto questo problema. Vorrei che Visual Studio rifattesse gli spazi dei nomi negli attributi ereditari nel markup, così come le classi.
csharpforevermore,

Anch'io. Quando rinomina gli spazi dei nomi, assicurati di spostare-alt-F10 o fai clic con il pulsante destro del mouse per rinominare e aggiornerà tutte le istanze per te.
Rob,

Questo ha funzionato per me, ma è stato difficile trovare dove implementare la soluzione. Ho fatto un "Trova tutto" per accedere al file Global.asax perché quando si fa doppio clic su Global.asax nell'editor di Visual Studio, si ottiene il file Global.asax.cs che in realtà è il codice dietro il file .asax. Nota l'estensione .cs. Quindi: CTRL-F e cerca Global.asax (senza .cs) e modifica l'eredità in modo che corrisponda al tuo spazio dei nomi.
GerardV,

9

Controlla il codice dietro le informazioni, fornito in global.asax. Dovrebbero puntare correttamente alla classe nel suo codice dietro.

esempio global.asax:

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

codice di esempio dietro:

   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 );
            }
        }
    }

7
  1. Fare clic con il tasto destro del mouse sul progetto all'interno della soluzione che non funziona.
  2. Scarica progetto
  3. Ricarica progetto
  4. Costruisci progetto
  5. Ricostruisci la soluzione

5

Questo può accadere anche durante l'esecuzione del progetto in Visual Studio se IIS Express ha / ospita un vecchio / diverso progetto utilizzando la stessa assegnazione di porte.

Per risolvere questo problema, è possibile modificare l'assegnazione delle porte per questo progetto o chiudere IIS Express.


5

Se stai ospitando in IIS express e apri il tuo progetto in due posizioni diverse, potresti vedere questo errore.

La soluzione è andare Project/Properties/Web/Serverse fare clic Create Virtual Directory.


4

La soluzione per me era fare clic con il pulsante destro del mouse sul progetto Mvc, scegliere proprietà e fare clic su Crea directory virtuale.

Si aprì una finestra di messaggio che diceva che il progetto era stato mappato nella cartella sbagliata (mostrava la cartella per un diverso progetto TFS e dava la possibilità di mapparlo nuovamente nella cartella corretta.


1
Grazie per il suggerimento, la causa per me è stata che di recente ho trasferito tfs. Ho dovuto annullare la mappatura della cartella della soluzione e mapparla di nuovo per far funzionare l'app!
adhie,

4

Ho già avuto bin/nella mia scheda di creazione. Ho ottenuto global.asax da un'altra copia del progetto, ma non ha funzionato.

La soluzione che alla fine ha funzionato per me è stata quella di rimuovere la bin/cartella e creare una nuova cartella vuota con lo stesso nome.


1
Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti a un autore, lascia un commento sotto il suo post: puoi sempre commentare i tuoi post e una volta che avrai una reputazione sufficiente sarai in grado di commentare qualsiasi post .
JLRishe,

@brasofilo Avrei potuto fare la chiamata sbagliata, ma data la grave mancanza di informazioni nella domanda originale, è molto probabile che questa non sia la soluzione per il problema di OP, e questa risposta è abbastanza breve da poter essere aggiunta come commento. D'altra parte, la domanda originale è stata pubblicata molto tempo fa e ci sono un sacco di risposte "questo è ciò che ha funzionato per me" qui, quindi è una chiamata difficile. Questa domanda e le sue risposte potrebbero aver bisogno di una pulizia.
JLRishe,

@JLRishe, beh, sì, è un casino di domande e risposte. Questa risposta potrebbe anche essere il duplicato del secondo più votato, ma non sono sicuro. Contrassegnerò la Q chiedendo un blocco di almeno 10rep.
brasofilo,

4

So che ci sono già molte soluzioni a questo, ma ho pensato di menzionare ciò che mi ha risolto.

La mia configurazione era impostata su Debug. Cambiarlo in Release ha fatto il trucco per me.


2
Modificato per il rilascio e ha funzionato ... cambiato in debug e ha continuato a funzionare ... grazie.
Paul Zahra,

3

Stavo ricevendo questo errore perché stavo eseguendo il progetto nonostante alcuni errori di compilazione. Questo non l'ho notato.


Non me ne sono accorto perché l'Elenco errori bleepity-bleep ha detto che era FELICE !!!! Grazie.
CindyH,

3

Eliminare il contenuto della cartella bin del sito (utilizzare Esplora file per questo). Ricostruire.


3

Sono caduto in questo. Ho letto e testato tutte le possibili soluzioni fornite in precedenza. Verifica del percorso di compilazione, compilazione, ricostruzione, pulizia, riavvio di IIS e VS2015, reinstallazione di tutti i pacchetti nuget, compilazione uno per uno, ecc., ...

All'improvviso mi sono ricordato che VS mantiene alcuni file temporanei ASP nelle cartelle di sistema ... Penso che dovrei provare, dopo tutto, che non potrebbe andare peggio. Quindi ho svuotato:

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

E tutto funziona di nuovo ... Strano che questo problema abbia soluzioni così diverse possibili ...


3

L'ho visto molte volte nell'ultimo decennio e l'ho appena ripreso. Ci sono molti problemi che causano lo stesso errore.

Una causa è una ridenominazione dei file. Se lavori con file .cshtml, controlla tutti gli spazi dei nomi all'interno di quei file e nel file Views \ web.config. Per i moduli Web, rinominare Default.aspx (i file .cs e designer correlati vengono automaticamente rinominati). Il codebehind cambia ma la riga Inherits nel markup no. Modificalo manualmente. Controlla la pagina del designer. A volte (VS2005-8?) La pagina di progettazione non riflette un cambiamento nello spazio dei nomi. Non l'ho visto nel 2010+.

Un altro problema è quando tutto funziona in VS o sul tuo PC locale ma non durante la distribuzione. Ciò potrebbe essere dovuto al fatto che l'ambiente di distribuzione non è strutturato allo stesso modo. Ad esempio, l'errore si verifica se si inserisce il codice in una directory virtuale in una cartella dell'applicazione, ma non si verifica se si crea una nuova cartella dell'applicazione e si inseriscono tutti i file al suo interno. Non capisco questo, poiché ho impostato la nuova cartella figlio / virtuale con le stesse autorizzazioni (o almeno così penso) e (credo) il pool di applicazioni dovrebbe funzionare allo stesso modo per tutto in una determinata cartella dell'applicazione.

Nel mio caso ho anche avuto una cartella bin con assembly che vengono aggiornati da altri assembly sul server IIS. Ancora una volta, assicurarsi che questi vengano eseguiti in una cartella dell'applicazione separata ha avuto esito positivo.

HTH


2

Ottengo questo problema ogni volta che salvo un file che viene compilato dinamicamente (ascx, aspx ecc.). Aspetto circa 8-10 secondi, poi scompare. È incredibilmente fastidioso.

Ho pensato che fosse forse un problema di IIS Express, quindi ho provato nel server di sviluppo integrato e lo sto ancora ricevendo dopo aver salvato un file. Sto eseguendo un'app MVC, sto usando anche T4MVC, forse questo è un fattore ...


2

Ho avuto questo errore frustrante nell'ambiente di sviluppo in Visual Studio e ho scoperto che il motivo era piuttosto stupido. In breve, se hai più di un progetto / sito Web in soluzione: assicurati che la porta a cui stai tentando di accedere al sito Web sia la stessa configurata in Proprietà progetto-> Web

Nel mio caso, l'errore è stato causato perché stavo usando una porta diversa per accedere al sito Web (nel browser) mentre al progetto in soluzione è stata assegnata un'altra porta. Per spiegare un po 'di più, avevo due progetti di siti Web nella mia soluzione Website1 (assegnata porta 8001 in ISS da Visual-Studio) e Website2 (assegnata porta 8101 in ISS da Visual-Studio). Quindi, anche se stavo costruendo Website1, stavo cercando di accedere al sito web usando locahost: 8101.

Ora che ho finalmente capito il problema, vedo che il commento di @ StingyJack affronta anche il problema simile.



2

Ho avuto di nuovo questo errore e nessuno dei precedenti ha funzionato per me. Ho dovuto rimuovere il seguente nodo in CSPROJ: <VisualStudio>....</VisualStudio>. Reloaded VS e ha funzionato.

Cordiali saluti, VS è stato in grado di ricreare il nodo e quindi ho ricreato il sito Web in IIS (tramite VS) e ha funzionato perfettamente.

Spero che questo possa aiutare qualcuno.


1

Assicurati di non dover aprire il progetto MVC come File-> Apri sito Web, usa invece File-> Apri progetto .


1

Ciò che ha funzionato per me è stato il riavvio di Visual Studio.

Ho provato a ricostruire manualmente, eseguendo una pulizia e ricostruzione, ed eliminando la cartella bin che non ha funzionato. Il mio percorso di output era già impostato su bin \


Ho fatto una ricostruzione a livello di soluzione ma ho notato che la cartella bin del mio progetto era vuota. Ho fatto un build solo sul progetto e improvvisamente ho avuto una cartella bin popolata. Ho lanciato il progetto e ha funzionato.
MrBoJangles,

1

Se hai cambiato uno spazio dei nomi, assicurati di fare clic con il tasto destro e refactoring.


1

Questo potrebbe accadere molto spesso se cambi il tuo spazio dei nomi. Restituisci il nome del tuo spazio dei nomi, proprio come una volta, e dovrebbe farlo funzionare!


1

In alcune circostanze, i nuovi progetti creati non sono impostati per impostazione predefinita su build. Se si fa clic con il pulsante destro del mouse sulla soluzione, scegliere Properties, quindi scegliere Configuration Properties| Configurationnodo a sinistra e assicurati che il tuo progetto abbia un segno di spunta sotto la Buildcolonna. In circostanze normali ho scoperto che ciò accade per impostazione predefinita. In altre circostanze (mi capita di avere una soluzione Web Api / Xamarin Android e iOS / Mvc 5 piuttosto complessa che presenti questo comportamento) il segno di spunta non è presente.

Ciò è correlato alle altre risposte: se l'assembly del tuo progetto web non è disponibile, viene visualizzato questo errore. Ma questo potrebbe essere uno scenario comune, soprattutto perché in realtà compili la tua soluzione: il progetto non viene creato.


1

Ho ricevuto questo errore perché il mio controllo versione era impostato per ignorare la mia cartella bin . Molto stupido, ma forse qualcun altro ne trarrà beneficio.


1
Non vorresti ignorare la cartella bin, insieme a obj e altre cose che sono costruite e che non fanno parte del codice sorgente?
MrBoJangles,

Normalmente si. Ma su questo particolare sito, era l'unico modo per inviare elementi al server. Probabilmente avrei dovuto rendere la mia risposta più generica.
Brent Wagoner,

Ricevo totalmente le circostanze speciali.
MrBoJangles,

1

Mi sono imbattuto in questo problema e vedo lì ogni tipo di risposta, ma nulla è stato accettato. Dopo un po 'ho scoperto che la semplice creazione del sito Web prima di provare a funzionare risolveva il mio problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.