“Não foi possível carregar o tipo [namespace] .Global” me causando pesar


106

Em meu aplicativo .Net 2.0 Asp.net WebForms, tenho meu Global.asax contendo o seguinte código:

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

No entanto, quando eu construo, recebo um erro informando

Não foi possível carregar o tipo 'MyNamespace.Global'.

Isso parece ser porque o namespace MyNamespace (definido no código por trás do arquivo Global.asax.cs) não é visto pelo compilador no arquivo Global.asax (não aparece em R # intellisence ..). Este acabou por ser um osso duro de roer ... qualquer ajuda será apreciada!

Observação: o Global.asax e o Global.asax.cs estão localizados na mesma pasta.

Nota2: Ao compilar a partir do prompt vs com csc, ele compila ok


As outras páginas do aplicativo funcionam? Às vezes, isso acontece quando o servidor da web está configurado para executar 1.1, mas o aplicativo é compilado para 2.0
Noon Silk

sim, 'Target Framework' é 2.0
gkdm

Respostas:


162

Uma situação que encontrei que causou esse problema é quando você especifica a plataforma para uma construção por meio de "Configuração de construção".

Se você especificar x86 como sua plataforma de construção, o visual studio atribuirá automaticamente bin / x86 / Debug como seu diretório de saída para este projeto. Isso é perfeitamente válido para outros tipos de projeto, exceto para aplicativos da Web em que o ASP.NET espera que os assemblies sejam enviados para a pasta Bin.

O que descobri na minha situação foi que eles estavam sendo enviados para ambos (Bin e Bin / x86 / Debug), com a exceção de que algumas das dlls, e inexplicavelmente a mais importante, sendo a dll do seu aplicativo da web, estavam faltando na Bin pasta.

Isso obviamente causou um problema de compilação e, portanto, a exceção "Não foi possível carregar o tipo global". Limpar a solução e excluir as montagens não fez diferença nas compilações subsequentes. Minha solução foi apenas alterar o caminho de saída nas configurações do projeto para o aplicativo da web para Bin (em vez de bin / x86 / Debug).


13
Além disso: tente fechar e reabrir o VS. Se você estiver usando um servidor de depuração integrado, ele pode estar executando um site diferente. Abrir / fechar irá registrar novamente as portas do host local.
BradLaney

1
No meu caso, ele queria colocar a saída do projeto em inetpub \ wwwroot \ myproject \ bin, mas eu tinha o iisexpress configurado para olhar em myProject \ bin. Apenas mudar o caminho de saída resolveu o problema.
shindigo

No meu caso, eu tinha um .dll que deveria ter sido incluído, mas não foi definido como 'copiar local' por algum motivo. Isso causou um problema de compilação semelhante ao declarado nesta resposta.
HockeyJ

Obrigado, Stantona. Foi isso que funcionou para mim, e bem a tempo de voltar para casa.
Bill Norman

3
Alterar o caminho de saída do projeto para a pasta bin resolveu o problema. Obrigado por salvar meu dia!
Tunahan

18

Você mudou o namespace do seu projeto? Já vi isso acontecer ocasionalmente onde alterei o namespace na caixa de diálogo Propriedades do projeto, mas o Visual Studio não mudou a namespacedeclaração nos arquivos de código existentes.


O que você acha que eu deveria fazer?
gkdm

1
Verifique o namespace em seu arquivo .cs e certifique-se de que é o mesmo declarado no arquivo asax. Minha suspeita é que eles serão diferentes ...
PhilPursglove

Não tenho certeza então. Tudo o que posso sugerir agora é reconstruir e verificar o conteúdo dos namespaces em sua montagem com ILDASM.
PhilPursglove

Obrigado, essa foi a solução que me ajudou. Usarei o Resharper para verificar todos os namespaces em minha solução.
Leonard

Acabei de ver o seguinte: Em um projeto MVC 5 (não que isso importe), alterei o namespace do projeto, mas esqueci de alterar o Global.asax (e a pasta App_Start). Independentemente da experiência, às vezes os descuidos bobos ainda te afetam.
Jason Snelders

15

Eu sou novo no desenvolvimento de asp .net e enfrentei o problema semelhante.

Atualizei a aula como uma partialclasse e funcionou bem.

public partial class Global : System.Web.HttpApplication

1
Não sei por que meu arquivo global acabou sem isso, mas esse era o problema para mim, obrigado!
ginja

9

Reiniciei o Visual Studio e o erro desapareceu!


2
o mesmo funcionou para mim. Certifique-se de fechar TODOS os Visual Studio abertos.
alansiqueira27

5

Aqui está outro para os livros. Parece que isso acontece quando você inicia mais de um aplicativo da web com o mesmo número de porta.

Basicamente, tenho alguns branches nos quais trabalho, tenho um branch principal e um branch de teste e um branch de lançamento. Quando mudei o branch para o branch de teste, percebi que ele estava usando a mesma configuração de endereço de porta, então optei por mudar isso. Em seguida, recebi outro aviso de que esta reserva está em conflito com outro aplicativo configurado. O servidor IIS Express é sensível a isso e, por alguma razão, ele complementa a configuração.

Simplesmente escolhendo uma terceira porta não afetada, este problema foi embora porque ele então mapeia a porta para um novo mapeamento de diretório (minhas ramificações estão localizadas de forma diferente no disco). Percebi isso porque tentei alterar o nome do tipo apontado por, Global.asaxmas o nome do tipo permaneceu inalterado mesmo depois de reiniciar o servidor, então, claramente, o código que eu estava alterando não foi refletido pela implantação do IIS Express.

Portanto, antes de perder muito sono com isso, tente alterar o número da porta IIS que é usada atualmente para executar o projeto da web.


5
  1. Clique com o botão direito em Solução do projeto e selecione Compilar em lote.
  2. Em seguida, selecione o nome do seu projeto e Limpar e reconstruir.

Funciona bem para mim no VS 2015.Now I can Use Global event. Meu Global.asaxarquivo tem esta linha

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

E eu faço o arquivo de classe Global.asax.csque está em uma AppCodepasta que parece

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

Espero que isso ajude


3

Verifique a ação Build de Global.asax.cs. Deve ser definido como Compile.

No Solution Explorer, clique com o botão direito em Global.asax.cs e vá para Propriedades. No painel Propriedades, defina a Ação de Compilação ( sem depurar).

Parece que o VS 2008 nem sempre adiciona os arquivos .asax (.cs) corretamente por padrão.


3

Eu experimentei um erro semelhante ao ter um

<clear/>

marcar como filho (o primeiro filho) do

<assemblies>

tag em meu Web.config . Eu havia inserido as tags no meu web.config em uma tentativa de evitar a herança da configuração em um aplicativo implantado no 'Site padrão' no IIS.


Isso definitivamente me apontou na direção certa. Acaba que coloquei <clear /> no diretório pai, já que era um espaço reservado vazio. Acredito que o verdadeiro problema é que ele limpou os assemblies referenciados por meu aplicativo, o que impediu o carregamento do assembly.
Doug Lampe

Eu também experimentei isso - remover assemblies selecionados explicitamente em vez de limpar a lista funcionou muito bem.
Arve Systad,

2

Na minha situação, estava relacionado ao tipo de site / aplicativo da Web do projeto. Recentemente, mudamos para MVC e tivemos que alterá-lo para Web Application.

Então, a solução foi simples: selecione seu site no Solution Explorer e remova-o da solução, então clique com o botão direito na solução e selecione Adicionar -> Projeto Existente ( não Site ), recompile o site.


2

Postagem antiga, mas eu recebo este erro ao tentar converter de projeto de site para projeto de aplicativo da web.

Siga as instruções neste link . Ainda recebo o erro global.asax, mas tudo o que fiz foi excluí-lo e adicioná-lo novamente clicando com o botão direito do mouse no projeto no Visual Studio e selecionando adicionar novo item. Adicione o arquivo global.asax e funcionou.


2

Nada disso funcionou para mim, infelizmente. A correção que encontrei era mais específica para desenvolvimento, especificamente, depuração em sua máquina local. Além disso, infelizmente, isso não corrige o problema da maneira que eu esperava, mas se você está perdendo o juízo, isso pode fazer você correr novamente.

TL; DR: Nas propriedades do projeto, na guia web, em Servidores, selecione Usar Servidor Web IIS Local. O endereço,

http://localhost/MyApp" 

já foi preenchido (eu tenho IIS7, .NET 4.0). O que foi originalmente selecionado foi "Use Visual Studio Development Server" com um caminho virtual de "/"

O que é realmente intrigante para mim é o fato de que nada mais funcionou, eu passei por todas as sugestões que pude encontrar no SO e nada funcionou. O estranho é que o erro foi (aparentemente, já se passaram alguns meses desde que eu olhei pela última vez) quando adicionei um novo arquivo ascx que era semelhante a um existente que foi adicionado de um antigo projeto .net 2.0 (eu acho) que permitiria o gerenciamento de usuário personalizado de dentro do aplicativo. Estava funcionando lindamente por um longo tempo, até que tentei adicionar este novo arquivo. Depois de adicioná-lo e ver o erro, eu prontamente reverti todas as alterações, mas o erro Global.ascx não foi embora, nem mesmo explodindo todo o projeto e recuperando as últimas do controle de origem.


2

Eu tinha convertido minha solução de VS2003 para VS2010 e tive problemas ao converter o projeto de aplicativo da web.

Eu experimentei exatamente o mesmo problema e nenhuma das respostas funcionou para mim.

O que funcionou para mim foi:

  • Clique com o botão direito na solução e selecione Configuration Manager
  • Observei cada uma das configurações na lista suspensa 'Configuração da solução ativa'.
  • Incluiu o aplicativo da web na construção marcando a caixa de seleção 'Construir'.

parece que os problemas que tive durante a conversão removeram o projeto de aplicativo da web do build por algum motivo.

Espero que esta resposta ajude alguém que tenha o mesmo problema ...


1

Se você reconstruir ou alterar um projeto e mover os arquivos de um antigo, certifique-se de verificar o bloco Herdar do seu global. No meu caso, o projeto / solução anterior se chamava intranet, e eu o recriei como intranet, mas quando movi os arquivos, ele não gostou das minúsculas (duh). Basta dar uma olhada geral nos nomes dos arquivos.



1

Tive problemas semelhantes em que recebia esse erro em um projeto.

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

Depois de passar algum tempo suspeito de uma função com possíveis erros em uma classe .. mais tarde comentando aquela função específica meu problema foi resolvido.

Não sei por que o Visual Studio não me deu esse erro específico no momento da depuração. Mas esse erro pode ocorrer devido a alguns erros no arquivo de classe.


1

Isso funciona para mim: Primeira coisa: parece que não importa o que você disse ao visual studio, a ide sempre procura o arquivo em: bin (para aplicativo da web e claro no meu caso) Então, mesmo quando eu disse para visual studio um caminho específico para carregar o arquivo, o ide continua procurando o caminho errado. Então eu mudo no: Build / Configuration Manager o tipo de saída para: Release (anterior eu limpo a solução, mesmo manualmente) então, quando o arquivo .dll foi criado, eu mudei manualmente para a pasta "bin" no projeto / solução pasta. Espero que isso seja útil!


1

No meu caso, foi por causa do meu processador alvo (x64) que mudei para x86, limpei o projeto, reiniciei o VS (2012) e reconstruí o projeto; então ele se foi.


1

Quando encontrei esse problema mais recentemente, tentei tudo o que foi mencionado aqui, mas sem sucesso. Depois de arrancar meu cabelo, decidi tentar deletar todo o meu base de código (sim, muito desesperado!) E então baixei tudo de novo do meu repositório de código. Depois de fazer isso, tudo funcionou bem mais uma vez.

Parece uma solução extrema, mas pensei em incluí-la aqui, pois não foi mencionada antes neste tópico.

(Observe que a outra vez em que encontrei esse problema, foi quando o Global.asax estava herdando de um componente que precisava ser registrado na máquina host. Isso estava faltando, portanto, tive o mesmo problema).

TL; DR; Se todas as respostas neste tópico não funcionarem para você, tente excluir e baixar novamente toda a sua base de código!


1

Já me deparei com esse problema algumas vezes e, em cada caso, estava reconstruindo um computador ou trocando por um novo. Minha primeira etapa (além de atualizar a máquina e instalar o Visual Studio) é puxar meus projetos do Git e testá-los.

Eu encontrei este erro todas as vezes porque tentei acessar meu código local antes de compilá-lo. Veja, eu tenho o Git e o Subversion configurados para ignorar minhas pastas bin / build, então, após um pull do meu repositório, esqueci de executar um build que puxa os pacotes necessários do Nuget (já que o Git / SVN os ignora também) e cria o DLLs necessárias para realmente executar meu aplicativo.

Duvido que isso resolva os problemas da maioria das pessoas, mas não o vi na lista de soluções potenciais, então pensei em adicioná-lo.


1

No meu caso, adicionei Global.asax a um projeto WCF para fazer experiências com ele, mas decidi removê-lo. Eu o removi do Solution Explorer, mas como ele ainda estava na pasta, o pipeline ainda estava encontrando e causando este erro.

Removi o Global.ASAX e o GLobal.asax.cs do sistema de arquivos e isso resolveu o erro.


ISSO resolveu para mim, obrigado, mas também gostaria de acrescentar para outras pessoas no futuro que, no meu caso, nunca adicionei Global.asax ao meu projeto. Mas, conforme mencionado aqui, os arquivos global.asax e global.asax.cs estavam em meu sistema de arquivos. Quando eu os apaguei, o bug foi embora.
stackonfire

1

Estando no jogo de desenvolvimento por quase 20 anos, essa castanha continuou a me atormentar em vários projetos.

Como tal, hoje, embora tenha o mesmo problema novamente, em outro projeto, decidi investigar mais e acredito que isso esteja relacionado à localização da pasta Bin ... ou mais especificamente, o caminho de saída da pasta bin.

Para mim, para um aplicativo da web baseado em serviço simples configurado para executar / depurar através do IIS, estava mudando o caminho de saída de bin \ debug para bin \ que resolveu

Projeto> Propriedades> Construir> Caminho de saída

Sério, espera que isso ajude.


0

Eu estava confuso com o mesmo problema. Tentei remover e e oglobal.asax ee (fechado VS2010 antes de adicionar). Limpei o projeto / solução, verifiquei quaisquer mudanças na configuração do aplicativo da web e outras coisas que funcionaram para outras pessoas aqui nos encadeamentos do SO. Eu finalmente limpei a solução, excluí as pastas bin / obj e parei todos os servidores de desenvolvimento VS2010 em execução, então reverti todas as alterações e descobri que o aplicativo estava em execução novamente. Refiz as mesmas coisas e agora está funcionando bem.

Aconteceu de novo e dessa vez essa solução funcionou para mim.


0

vá para o Gerenciador de configuração em propriedades para sua solução. Em seguida, certifique-se de todos os projetos e sendo construídos, e isso não será um problema.


0

Tive que deletar (duplicar) arquivos do disco que não estavam incluídos no projeto. Parece que as duplicatas foram causadas por uma renomeação com falha. Os nomes dos arquivos eram diferentes, mas o mesmo código.

Depois de excluir todos os arquivos oof. *, Consegui digitalizar.

  • foo.aspx
  • foo.aspx.cs
  • foo.aspx.designer.cs
  • oof.aspx
  • oof.aspx.cs
  • oof.aspx.designer.cs

0

no meu caso era IISExpress apontando para a mesma porta que o IIS para resolver vá para

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

e procure a porta, você encontrará a <site>...</site>tag que precisa para remover ou comentar


0

Tive esse problema ao implantar apenas no servidor prod. Em meus outros ambientes funciona ... Eu apenas apaguei as coisas da pasta bin e, em seguida, publiquei novamente e funcionou depois disso.


0

Se você estiver usando o Visual Studio, provavelmente está tentando executar o aplicativo no modo de liberação, tente alterá-lo para o modo de depuração.


0

Tentei reconstruir a solução e limpar os arquivos temporários do ASP.NET sem sucesso.
Mas depois de executar IISRESET o erro desapareceu.

Atualização : Tive o mesmo problema novamente 1 mês depois. Percebi que MyWebsite.DLL existe na pasta bin, mas não existe nos arquivos ASP.NET temporários (C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Arquivos temporários do ASP.NET). Eu tentei algumas coisas, que são sugeridas neste e "Parser Error Message: Could not load type" nas questões Global.asax (na verdade esqueci minha própria resposta), mas o erro desapareceu novamente somente após IISRESET


0

Bem, no meu caso do VS 2017, a carga de solução leve estava causando esse problema. Desativei e reiniciei o VS, em seguida, reconstruí minha solução e o problema desapareceu.


2
Qual é a solução "leve"?
Fandango68 de

0

Só queria adicionar meus dois centavos. Estava recebendo o mesmo erro e tentei todas as sugestões sem sucesso. Minha situação provavelmente é diferente?

Acontece que um arquivo "AssemblyInfo.cs" gerado automaticamente tinha alguns espaços estranhos, o que estava me impedindo de iniciar o aplicativo da web (via depuração). Esta é a aparência do arquivo:

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

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

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

Depois de eliminar os espaços em AssemblyCompany e AssemblyCopyright, finalmente consegui construir e lançar o projeto.

Observado no seguinte ambiente: --Visual Studio 2017 Community versão 15.3.0 --Win 7 x64 Enterprise --Novo projeto> Visual C #> Web> ASP.NET Web Application> Web Forms

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.