Erro: «Não foi possível carregar o tipo MvcApplication»

240

Estou recebendo o erro

Não foi possível carregar o tipo MvcApplication

quando tento executar meu site.

Como corrigi-lo?

Gil
fonte
35
Recebi esse erro aleatoriamente um dia em nosso servidor de compilação. fazer uma reconstrução manual resolveu isso.
Zack
1
O caminho de saída é definido nas propriedades do projeto na guia Construir
silasdavis
8
exclua o arquivo global.asax e adicione um novo, e você ficará bem.
DotNetGeek
4
Acontece que o novo projeto não foi selecionado na configuração ativa para compilação.
JGeerWM
4
Se você adicionou recentemente o projeto ou alterou recentemente a configuração de publicação (ou seja, mudou de AnyCPU para x64), pode ser que o projeto não seja construído quando você o executa. Vá para BUILD-> CONFIGURATION MANAGER e marque a caixa de seleção da coluna build. Acabei de ter esse problema agora. Você também notará que seus pontos de interrupção são círculos claros ao executar o aplicativo. Eu acho que isso é resultado da compilação padrão do .net 4.5.1 na arquitetura do processador, favorecendo 32 bits. Apenas um problema se você verificar x64
David Ponte

Respostas:

115

Por mais estúpido que possa parecer, tentei de tudo e não funcionou e finalmente reiniciou o VS2012 para vê-lo funcionando novamente.

gurrawar
fonte
1
LMFAO, funcionou para mim também depois de experimentar tudo mencionado aqui e não funcionou! Obrigado e +1!
Yustme 22/02
O mesmo problema aqui. O erro apareceu após uma mesclagem e não desapareceu até o VS2012 ser reiniciado.
precisa saber é o seguinte
1
Para mim, o que poderia ter acontecido foi que a porta foi usada por uma segunda instância do Visual Studio que não teve o projeto compilado.
argila Lenhart
Trabalhou para mim também. Que lixo.
PAWAN RAJ Shakya
5 anos depois, VS2017 e essa ainda é a solução. : /
Sagiv bg
105

-Para mim, a correção foi alterar o caminho de saída na guia compilar. Eu mudei o caminho de saída parabin\ e o erro desapareceu.

-Outra correção pode ser que você tenha o projeto de inicialização errado definido.

bob novo
fonte
8
Esse também era nosso problema. Ele já havia sido definido como algo como Debug \ x86 \ bin
t3rse
4
HA! Esta é a segunda vez em dois anos que estive neste artigo com esse problema, pela primeira vez foi a resposta principal e pela segunda vez.
quer
1
Obrigado! Isso também me mordeu. Eu havia mudado a plataforma para limpar alguns avisos, e o caminho da saída foi alterado sem que eu soubesse.
Camainc
6
Esta foi a resposta certa para mim ... Alguma idéia de por que o Visual Stupido está se comportando dessa maneira?
andreapier
1
Sim, era isso. Mudar para `bin` faz com que tudo funcione conforme o esperado. @andreapier: Sim, o VS2012 também parece se comportar dessa maneira estúpida. Alguém conserte o mais rápido possível! :)
agora quem não deve ser nomeado.
82

Eu estava recebendo o mesmo erro e apesar de fazer tudo mencionado aqui e em outros lugares, nada funcionou. Descobri que eu havia copiado o código-fonte global.asax.cs de uma versão anterior do projeto que tinha um nome diferente. Então namespace Testdeveria ter sido namespace Test.WebUI. Um erro bobo, é claro, e estou um pouco envergonhado de escrever isso! Mas escrevendo na esperança de que um erro semelhante de qualquer outra pessoa possa levá-lo a verificar esse aspecto trivial também.

Vipul
fonte
Obrigado, Vipul. Acabei de fazer a mesma coisa e pensei que havia perdido muito trabalho como resultado. Apenas mudando o nome namespace salvou meu bacon
xiecs
2
Eu fiz a mesma coisa. Abri o Global.asax em um editor de texto e corrijo o problema do espaço para nome. Graças
Kayvan Karim
6
Eu fiz a mesma coisa. Só para elaborar para outras pessoas: Originalmente, eu tinha um projeto de teste chamado "MvcApplication1" que foi criado automaticamente. Fiz então uma substituição global do namespace "MvcApplication" para "MyTest". No Global.asax no bloco de notas eu precisava depois mudar para Inherits = "MyTest.MvcApplication"
PabloInNZ
Se houvesse uma maneira de dar ouro, eu daria
Shanabus 25/03
53

Basta fazer uma compilação manual da sua solução.

Se você estiver usando o IIS local, tente excluir o registro do site no gerenciador do IIS e, em seguida, recriá-lo manualmente.

Peter Morris
fonte
Este foi vencedor para mim, eu tinha caído site a partir do repo e configurar o IIS, mas nunca fez uma compilação no IIS
Anthony Principal
31

[Extraído da pergunta]

Se você estiver recebendo este erro: "Não foi possível carregar o tipo MvcApplication", consulte o caminho de Saída do seu projeto e verifique se está definido como 'bin \'. O problema é que o AspNetCompiler não pode encontrar os arquivos se eles não estiverem no local padrão.

Outro efeito colateral da alteração da pasta de saída é que você não poderá depurar seu código e ele receberá uma mensagem informando que as informações do Assembly não podem ser encontradas.

StingyJack
fonte
1
Isso parece um pouco estranho quando normalmente é separado entre as diferentes configurações de compilação.
precisa
Por padrão, ele é separado, mas muitas pessoas os alteram para uma única pasta, para que release e debug estejam no mesmo local para um projeto diferente que faça referência à saída (instaladores, etc.).
StingyJack
Gostaria de saber se esse problema é peculiar ao IIS Express. De qualquer forma, a razão pela qual eu descobri é porque ela acabou de atrapalhar uma de nossas novas entradas: eu havia mudado binpara bin\Debuge bin\Releaseos arquivos antigos ainda estavam na minha binpasta, então não havia problemas. Obviamente, se você faz uma verificação geral limpa e compila esses arquivos, não existe para você, então isso explode.
Bart Leia
15

Eu tive o mesmo problema e o resolvi com as etapas abaixo

  1. Ir para propriedades do projeto
  2. Na guia "Build", defina o caminho de saída como "bin \"
A_B
fonte
1
Muito obrigado por isso, ele corrigiu um problema que eu estava tendo com os pontos de interrupção não configurados!
22413 Chris
Foi isso que funcionou para mim. Eu descobri por mim mesmo, mas obrigado de qualquer maneira.
Alexandre
Puta merda! Isso economiza um dia.
ske
14

Ahh isso foi chato.

Obtive este erro após um corte de energia e voltei ao meu projeto.

Eu tentei reiniciar o VS. Tentei definir o caminho de saída como \ bin. Eu verifiquei meus espaços de nome.

Mas o que funcionou para mim foi reconstruir a solução.

Reconstrua a solução !!!

Pomster
fonte
13

Minha solução: porque eu criei o problema! Eu havia alterado o espaço para nome no Global.asax.cs

Você também precisa alterar o valor do atributo Inherits no Global.asax.

mkaj
fonte
3
Eu também tive esse problema. Desejo que o Visual Studio refatore os espaços para nome nos atributos herdados na marcação - assim como nas classes.
csharpforevermore
O mesmo aqui. Ao renomear namespaces, certifique-se de shift-alt-F10 ou clique com o botão direito do mouse para renomear e ele atualizará todas as instâncias para você.
Rob Rob
Isso funcionou para mim, mas foi difícil encontrar onde implementar a solução. Eu fiz um 'Localizar tudo' para acessar o arquivo Global.asax porque, quando você clica duas vezes em Global.asax no editor do Visual Studio, obtém o arquivo Global.asax.cs, que na verdade é o código por trás do arquivo .asax. Observe a extensão .cs. Portanto: CTRL-F e procure Global.asax (sem .cs) e altere a herança para corresponder ao seu espaço para nome.
GerardV
9

Verifique o código por trás das informações, fornecidas em global.asax. Eles devem apontar corretamente para a classe em seu código por trás.

exemplo global.asax:

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

código de exemplo por trás:

   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 );
            }
        }
    }
Sabre Farshid
fonte
7
  1. Clique com o botão direito do mouse no projeto da solução que está falhando.
  2. Descarregar projeto
  3. Recarregar projeto
  4. Projeto de Compilação
  5. Solução de reconstrução
JoshYates1980
fonte
5

Isso também pode acontecer durante a execução do projeto no visual studio se o IIS Express tiver / estiver hospedando um projeto antigo / diferente usando a mesma atribuição de porta.

Para corrigir isso, você pode alterar a atribuição de porta para este projeto ou fechar o IIS Express.

StingyJack
fonte
5

Se você estiver hospedando no IIS express e abrir seu projeto em dois locais diferentes, poderá ver esse erro.

A solução é acessar Project/Properties/Web/Serverse clicar Create Virtual Directory.

Steve Dunn
fonte
4

A solução para mim foi clicar com o botão direito do mouse no projeto Mvc, escolher propriedades e clicar em Criar diretório virtual.

Uma caixa de mensagem apareceu dizendo que o projeto foi mapeado para a pasta errada (mostrava a pasta para um projeto TFS diferente . Oferecia a opção de mapear de volta para a pasta correta.

Will Newton
fonte
1
Obrigado pela dica, a causa para mim foi que eu mudei recentemente o tfs. Eu precisava remover o mapeamento da pasta da solução e mapeá-la novamente para fazer o aplicativo funcionar!
Adhie
4

Eu já tive bin/ na minha guia de compilação. Eu obtive global.asax de outra cópia do projeto, mas isso não deu certo.

A solução que finalmente funcionou para mim foi remover a bin/pasta e criar uma nova pasta vazia com o mesmo nome.

zaydev
fonte
1
Isso não fornece uma resposta para a pergunta. Para criticar ou solicitar esclarecimentos a um autor, deixe um comentário abaixo da postagem - você sempre pode comentar em suas próprias postagens e, quando tiver reputação suficiente , poderá comentar em qualquer post .
JLRishe
@brasofilo Eu poderia ter feito a ligação errada, mas, dada a grave falta de informações na pergunta original, é altamente provável que essa não seja a solução para o problema do OP, e essa resposta é curta o suficiente para ser adicionada como um comentário. Por outro lado, a pergunta original foi postada há muito tempo e há muitas respostas "é isso que funcionou para mim" aqui, por isso é uma decisão difícil. Esta pergunta e suas respostas podem estar precisando de alguma limpeza.
JLRishe
@JLRishe, bem, sim, é uma bagunça de perguntas e respostas. Essa resposta pode até ser duplicada da segunda mais votada, mas não tenho certeza. Vou sinalizar o Q solicitando um bloqueio de 10rep mínimo.
Brasofilo
4

Eu sei que já existem muitas soluções para isso, mas pensei em mencionar o que resolveu isso para mim.

Minha configuração foi definida como Debug. Mudar para Release fez o truque para mim.

Amanda
fonte
2
Alterou para liberar e funcionou ... mudou de volta para depuração e continuou trabalhando ... obrigado.
Paul Zahra
3

Eu estava recebendo esse erro porque estava executando o projeto, apesar de alguns erros de tempo de compilação. Isso eu não percebi.

Gautam Jain
fonte
Não percebi porque a Lista de Erros bleepity-bleep dizia que era FELIZ !!!! Obrigado.
CindyH 15/09/16
3

Exclua o conteúdo da pasta bin do site (use o explorador de arquivos para isso). Reconstruir.

Malcolm Swaine
fonte
3

Eu caí nisso. Eu li e testei todas as soluções possíveis que foram dadas antes. Verificando o caminho da compilação, compilação, reconstrução, limpeza, reiniciando o IIS e o VS2015, reinstale todos os pacotes de nuget, compilando-os um por um, etc ...

De repente, lembrei-me de que o VS mantém alguns arquivos temporários ASP nas pastas do sistema ... Acho que devo tentar, afinal, que não poderia ficar pior. Então eu esvaziei:

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 tudo está funcionando novamente ... Estranho que esse problema tenha soluções possíveis tão diferentes ...

junta
fonte
3

Eu já vi isso muitas vezes na última década e só consegui novamente. Existem muitos problemas que resultam no mesmo erro.

Uma causa é a renomeação de arquivos. Se você estiver trabalhando com arquivos .cshtml, verifique todos os espaços para nome nesses arquivos e no arquivo Views \ web.config. Para formulários da Web, renomeie Default.aspx (.cs e arquivos de designer relacionados são renomeados automaticamente). O código atrás muda, mas a linha Inherits na marcação não. Mude-o manualmente. Verifique novamente a página do designer. Às vezes (VS2005-8?), A página do designer não reflete uma alteração no espaço para nome. Não vi isso em 2010 ou mais.

Outro problema é quando tudo funciona no VS ou no seu PC local, mas não quando você implanta. Isso pode ocorrer porque o ambiente de implementação não está estruturado da mesma maneira. Por exemplo, o erro ocorre se você colocar o código em um diretório virtual em uma pasta do aplicativo, mas não ocorre se você criar uma nova pasta do aplicativo e colocar todos os seus arquivos lá. Eu não entendo esse, pois tive a nova pasta filho / virtual definida com as mesmas permissões (ou pelo menos acho) e (acredito) que o pool de aplicativos deve funcionar da mesma maneira para tudo em uma determinada pasta de aplicativos.

No meu caso, também tive uma pasta bin com assemblies atualizados de outros assemblies no servidor IIS. Mais uma vez, garantir que eles sejam executados em uma pasta de aplicativo separada resultou em sucesso.

HTH

TonyG
fonte
2

Eu recebo esse problema toda vez que eu salvo um arquivo que é compilado dinamicamente (ascx, aspx etc.). Espero cerca de 8 a 10 segundos e depois ele desaparece. É terrivelmente irritante.

Eu pensei que era talvez um problema do IIS Express, então tentei no servidor de desenvolvimento embutido e continuo recebendo depois de salvar um arquivo. Estou executando um aplicativo MVC, também estou usando o T4MVC, talvez isso seja um fator ...

Sam
fonte
2

Eu tive esse erro frustrante no ambiente de desenvolvimento no Visual studio e descobri que o motivo era bastante tolo. Em resumo, se você tiver mais de um projeto / site da Web em solução: verifique se a porta que você está tentando acessar o site é igual à configurada em Propriedades do Projeto-> Web

No meu caso, o erro foi causado porque eu estava usando uma porta diferente para acessar o site (no navegador) enquanto o projeto na solução recebeu outra porta. Para explicar um pouco mais, eu tinha dois projetos de site na minha solução Website1 (porta atribuída 8001 no ISS pelo Visual-Studio) e Website2 (porta atribuída 8101 no ISS pelo Visual-Studio). Portanto, mesmo que eu estivesse criando o Website1, estava tentando acessar o site usando o locahost: 8101.

Agora que finalmente percebi o problema, vejo que o comentário do @ StingyJack também aborda a questão semelhante.

mmmMAC
fonte
2

Verifique se o espaço para nome em seu global.asax.cs corresponde ao espaço para nome do seu aplicativo da web

Soluções IndieTech
fonte
2

Eu tive esse erro novamente e nenhuma das opções acima funcionou para mim. Eu tive que remover o seguinte nó no arquivo .csproj:<VisualStudio>....</VisualStudio> . Recarregado VS e funcionou.

Para sua informação, o VS conseguiu recriar o nó e, em seguida, recriei o site no IIS (por meio do VS) e funcionou perfeitamente.

Espero que isso ajude alguém.

Rob
fonte
1

Verifique se você não precisa abrir o projeto MVC, como Arquivo-> Abrir site, use Arquivo-> Abrir projeto .

Awk
fonte
1

O que funcionou para mim foi reiniciar o Visual Studio.

Tentei recriar manualmente, executando uma limpeza e reconstrução e excluindo a pasta bin, que não funcionou. Meu caminho de saída já estava definido como bin \

Johnie Karr
fonte
Fiz uma reconstrução no nível da solução, mas notei que a pasta bin do meu projeto estava vazia. Eu fiz uma compilação apenas no projeto e, de repente, tive uma pasta bin preenchida. Lancei o projeto e funcionou.
MrBoJangles
1

Se você alterou um espaço para nome, certifique-se de clicar com o botão direito e refatorar.

rocktheartsm4l
fonte
1

Isso pode acontecer com muita frequência se você alterar seu espaço para nome. Retorne o nome do seu espaço para nome, como costumava ser, e isso deve fazê-lo funcionar!

user3576116
fonte
1

Em algumas circunstâncias, novos projetos que você cria não são definidos por padrão para compilar. Se você clicar com o botão direito do mouse na sua solução, escolha Propertiese escolha o Configuration Properties| Configurationnó à esquerda e verifique se o seu projeto tem uma marca de seleção naBuild coluna. Em circunstâncias normais, descobri que isso acontece por padrão. Em outras circunstâncias (por acaso tenho uma solução Web Api / Xamarin para Android e iOS / Mvc 5 um tanto complexa que exibe esse comportamento), a marca de seleção não está presente.

Isso está relacionado às outras respostas - se o assembly do seu projeto da web não estiver disponível, você receberá este erro. Mas esse pode ser um cenário comum, principalmente porque você de fato compila sua solução - o projeto simplesmente não é construído.

Kirk Woll
fonte
1

Eu recebi esse erro porque meu controle de versão foi configurado para ignorar minha pasta bin . Muito estúpido, mas talvez alguém se beneficie.

Brent Waggoner
fonte
1
Você não gostaria de ignorar a pasta bin, juntamente com obj e outras coisas que são criadas e não fazem parte do código-fonte?
MrBoJangles
Normalmente sim. Mas nesse site em particular, era a única maneira de enviar itens para o servidor. Eu provavelmente deveria ter tornado minha resposta mais genérica.
Brent Waggoner
Eu entendo totalmente as circunstâncias especiais, coisas assim.
MrBoJangles
1

Eu me deparei com esse mesmo problema e vejo todos os tipos de respostas, mas nada foi aceito. Depois de um tempo, descobri que simplesmente a construção do site antes de tentar executar resolveu meu problema.

webternals
fonte