Depuração / carregamento do Visual Studio muito lento

Estou no final do juízo. O Visual Studio normalmente é extremamente lento para depurar ou simplesmente carregar (“iniciar sem depurar”) meus sites ASP.NET MVC. Nem sempre: no início, os projetos serão carregados de forma agradável e rápida, mas, quando carregarem devagar, sempre carregarão lentamente depois disso. Eu poderia estar esperando 1-2 minutos ou mais.

Minha configuração:

Estou usando o Visual Studio 2012 Express , atualmente, mas também tive o mesmo problema no Visual Studio 2010 Express. Minha solução é armazenada em uma unidade de rede; especificamente, os Meus Documentos são redirecionados para uma unidade de rede, se isso for importante. (Não deveria. Há momentos em que meu site carrega muito rápido sob essa configuração.)

Eu carrego no Internet Explorer 9 normalmente, mas o mesmo problema acontece no Firefox.

Isso pode acontecer em qualquer projeto ASP.NET MVC em que eu trabalhe, e parece girar em torno de ter DisplayTemplates, que todos os meus projetos ASP.NET MVC fazem. E é tudo C # e Razor, se isso importasse.

Sintomas:

O sistema carregará meus símbolos centenas de vezes. Basicamente, o seguinte, mas há pelo menos 300 dessas linhas, cada uma com arquivos DLL sempre um pouco diferentes para os mesmos CSHTMLs:

'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_contact.cshtml.22013bb9.xighmhow.dll', Symbols loaded. 'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_contact.cshtml.22013bb9.cv5hktkf.dll', Symbols loaded. 'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_statuscode.cshtml.22013bb9.1o77hs8i.dll', Symbols loaded. 'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_statuscode.cshtml.22013bb9.jja-77mw.dll', Symbols loaded. 'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_location.cshtml.22013bb9.l_e9ev_s.dll', Symbols loaded. 'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_location.cshtml.22013bb9.b4n59gom.dll', Symbols loaded. 

Acima, eu tenho três DisplayTemplates: “Contact”, “Location” e “StatusCode”. Parece que o IIS está carregando símbolos duas vezes para cada vez que o displaytemplate é chamado. Assim, se eu estiver exibindo uma tabela de 100 inputs que chama todos os três desses modelos de exibição, são 600 símbolos separados carregados.

Esta não é uma operação rápida também. Examinando os arquivos de log gerados pelo IIS, são necessários cerca de 200 ms para cada símbolo carregar. Assim, atrasos super longos.

O que eu tentei:

  • Debug ou Release version, não importa.
  • Colocar meu projeto em uma implementação completa do IIS em um servidor da Web o executa rapidamente sem problemas.
  • O Cassini, o IIS Express 7.5 e o IIS Express 8.0, todos têm o problema.
  • Excluir todos os pontos de interrupção não faz nada.
  • Solução limpa , ou excluir o .suo também não fazem nada.
  • Se eu reparar o IIS Express, ou excluir a pasta My Docs\IISExpress , ou reparar / reinstalar o Visual Studio, o problema PODE desaparecer, mas apenas por um tempo, antes que ele volte.

Qualquer conselho é apreciado.

Para responder a mais perguntas, sim, minha máquina definitivamente tem a potência. O irritante é que o mesmo projeto, com NADA alterado, pode carregar muito rapidamente às vezes, normalmente depois de eu reparar o IIS Express e excluir a pasta My Docs\IISExpress . Eventualmente, “algo” acontece e é reduzido para 2 minutos para carregar novamente. O que estou trabalhando não é um projeto complicado. Nenhuma biblioteca ou dependencies externas, e meu VS.NET não possui addons what-so-ever.

É importante observar que esta máquina possui o Symantec Endpoint Protection, que tem um histórico de causar estragos. Mas desativá-lo imediatamente (é bom ser um administrador) não resolveu o problema.

Eu tenho uma teoria neste momento. Eu estou pensando que isso é tudo porque eu estou trabalhando fora de uma pasta redirecionada de um compartilhamento de rede. Enquanto o depurador estava passando por centenas de linhas de “símbolos carregados”, parei para ver o que estava fazendo. Estava no meu código, carregando o DisplayTemplate que eu tinha. Pisando na saída do modelo isto:

 Step into: Stepping over non-user code 'System.Threading.WaitHandle.InternalWaitOne' Step into: Stepping over non-user code 'System.Threading.WaitHandle.WaitOne' Step into: Stepping over non-user code 'System.CodeDom.Compiler.Executor.ExecWaitWithCaptureUnimpersonated' Step into: Stepping over non-user code 'System.CodeDom.Compiler.Executor.ExecWaitWithCapture' Step into: Stepping over non-user code 'Microsoft.CSharp.CSharpCodeGenerator.FromFileBatch' Step into: Stepping over non-user code 'Microsoft.CSharp.CSharpCodeGenerator.System.CodeDom.Compiler.ICodeCompiler.CompileAssemblyFromFileBatch' Step into: Stepping over non-user code 'System.Web.Compilation.AssemblyBuilder.Compile' 'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_statuscode.cshtml.22013bb9.bciuyg14.dll', Symbols loaded. Step into: Stepping over non-user code 'System.Web.Compilation.BuildManager.CompileWebFile' Step into: Stepping over non-user code 'System.Web.Compilation.BuildManager.GetVPathBuildResultInternal' Step into: Stepping over non-user code 'System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert' Step into: Stepping over non-user code 'System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory' Step into: Stepping over non-user code 'System.Web.Mvc.BuildManagerWrapper.System.Web.Mvc.IBuildManager.FileExists' Step into: Stepping over non-user code 'System.Web.Mvc.VirtualPathProviderViewEngine.GetPathFromGeneralName' Step into: Stepping over non-user code 'System.Web.Mvc.VirtualPathProviderViewEngine.FindPartialView' Step into: Stepping over non-user code 'System.Web.Mvc.ViewEngineCollection.Find' Step into: Stepping over non-user code 'System.Web.Mvc.ViewEngineCollection.FindPartialView' Step into: Stepping over non-user code 'System.Web.Mvc.Html.TemplateHelpers.ActionCacheViewItem.Execute' 'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\b63f8236\6775085d\App_Web_statuscode.cshtml.22013bb9.kwj3uqan.dll', Symbols loaded. Step into: Stepping over non-user code 'System.RuntimeType.CreateInstanceSlow' Step into: Stepping over non-user code 'System.Web.Mvc.DependencyResolver.DefaultDependencyResolver.GetService' Step into: Stepping over non-user code 'System.Web.Mvc.BuildManagerViewEngine.DefaultViewPageActivator.Create' Step into: Stepping over non-user code 'System.Web.Mvc.BuildManagerCompiledView.Render' 

Parece que o Visual Studio está recompilando meu displaytemplate toda vez que é chamado, o que é novamente, centenas de vezes. Minha teoria é que o Visual Studio compila o arquivo, salva-o no compartilhamento de rede, o compartilhamento de rede e, de alguma forma, marca um novo horário nele, eo Visual Studio acha que o arquivo foi alterado e, portanto, o Visual Studio o recompõe novamente. Apenas uma teoria embora; Eu realmente não tenho ideia.

Por um lado, aparentemente eu tenho arquivos off-line (este é um computador desktop em um escritório, eu não poderia me importar menos). Vou desativar, reiniciar e tentar novamente amanhã.

Além disso, mover meu projeto, como está, para o C local: corrige-o. Ele carrega muito rapidamente. Mas isso não é ideal em um ambiente de trabalho. Eu perco as versões anteriores, meu código não é salvo em backup, a menos que eu copie-o manualmente e não seja mais compartilhado com ninguém.

Eu posso me contentar com copiar e voltar de C para o compartilhamento de rede, se se trata disso. É muito mais irritante esperar dois minutos por cada carregamento de página.

Aqui está como eu resolvi o problema do “carregamento lento de símbolo” no Visual Studio 2012:

  • Vá para Ferramentas -> Opções -> Depuração -> Geral

  • VERIFIQUE a marca de verificação junto a “Ativar apenas o meu código”.

  • Vá para Ferramentas -> Opções -> Depuração -> Símbolos

  • Clique no botão “…” e crie / selecione uma nova pasta em algum lugar em seu computador local para armazenar símbolos em cache. Eu nomeei o meu “Symbol caching” e coloquei em Documents -> Visual Studio 2012.

  • Clique em “Carregar todos os símbolos” e espere os símbolos serem baixados dos servidores da Microsoft, o que pode demorar um pouco. Observe que o botão Carregar todos os símbolos está disponível somente durante a debugging.

  • Marque a marca de seleção ao lado de “Microsoft Symbol Servers” para evitar que o Visual Studio consulte remotamente os servidores da Microsoft.

  • Clique OK”.

De agora em diante, o carregamento de símbolos deve ser muito mais rápido.

Observe que, se você fizer alterações / downloads nos assemblies da Microsoft, talvez seja necessário voltar para a checkbox de diálogo Símbolos e “Carregar todos os símbolos” novamente.

Desligar o intelliTrace consertou isso para mim.

No Visual Studio, Ferramentas -> Opções -> IntelliTrace

Em seguida, desmarque a checkbox de seleção “Ativar IntelliTrace”.

Desabilitar o IntelliTrace no Visual Studio 2012

Nada disso funcionou para mim, mas eu encontrei um ponto de interrupção em um símbolo que foi excluído. Parece que 2010 estava pendurado nele. Para ver se este é o seu problema, faça o debug-> windows-> breakpoints. Se algum deles estiver lá, apenas os apague.

Saunders, mencionou que ele verificou isso, mas não foi mencionado nas soluções para este problema. Talvez conhecimento comum para alguns, mas não para todos nós.

Eu apaguei a pasta “Temporary ASP.NET Files” e o carregamento da minha página localhost melhorou dramaticamente. Aqui está o caminho …% temp% \ Arquivos ASP.NET Temporários \

Acho que finalmente posso pelo menos conhecer a causa, embora não o motivo. Quando o problema começou a ocorrer novamente, notei uma tonelada de processos “conhost.exe” órfãos. Eu fecharia o Visual Studio e eles permaneceriam abertos. Finalizar a tarefa em cada um deles finalmente resolveu o problema de maneira confiável. [esperançosamente]

(Apenas note que o conhost.exe não é um processo do Visual Studio, embora o Visual Studio o use. Assim, outros usuários podem ter outros aplicativos que executam o conhost.exe. Eu sei que minha máquina não é por isso que consigo terminar com segurança tarefa todos eles, mas YMMV.)

Por que isso acontece? Parece ocorrer quando eu abro mais de um projeto de uma só vez, o que costumo fazer com frequência, embora eu apenas compile e depure um deles a qualquer momento.


Editar # 1 – Esta não é uma “bala de prata”, infelizmente. Nem sempre funciona para mim. Normalmente, quando as coisas ficam lentas, eu fecho todas as minhas sessões do Visual Studio, depois entro no gerenciador de tarefas e termino qualquer instância dele, conhost.exe, iisexpress.exe Microsoft.VisualStudio.Web.Host.exe e MSBuild.exe Eu posso encontrar.

Normalmente, depois disso, quando eu reiniciar meu projeto, ele será carregado rapidamente. Mas não sempre.

Realmente eu acho que o melhor curso de ação é provavelmente não construir e depurar o código de um compartilhamento de rede / pasta redirecionada.


Editar # 2 – Dois anos mais tarde, e isso ainda é um problema para mim no Visual Studio Community 2013, mas parece que pelo menos acho a tarefa culpada: Explorer.exe . Sim, quem sabia? No momento em que eu termino essa tarefa, a página carrega em um único segundo.

Se eu tiver um navegador de arquivos do Windows Explorer aberto para a minha unidade de rede redirecionada (que geralmente é porque esse é o meu código), esse problema parece ocorrer. Fechando a janela não é suficiente, eu tenho que matar toda a tarefa do Explorer.exe. Eu só podia adivinhar o que está fazendo … enlouquecendo com alças de arquivos?

Eu geralmente posso usar o gerenciador de tarefas para iniciar uma nova tarefa explorer.exe (eu só posso ter muito alt-tabbing), e Visual Studio continuará a carregar agradável e rápido. Mas se eu tanto abrir o Windows Explorer, quase sempre volta para o super-slow-mo.

Então, se você tem um compartilhamento de rede redirecionado, tente. Com certeza é melhor trabalhar no local.

Você ativou o FusionLog?

Meu VisualStudio foi muito lento para iniciar, abrir solução e carregar símbolos ao iniciar a debugging. Foi lento apenas na minha máquina, mas não em outras máquinas.

O FusionLog grava toneladas de material de log em disco. Apenas desabilitá-lo no RegEdit resolveu tudo, no meu caso.

Esta é a chave FusionLog no registro:

 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion 

Verifique o valor de ForceLog (1 ativado, 0 desativado).

O acima são todas boas soluções e eu tentei todos eles, mas tenho a solução aqui , que é

 Debug -> Delete All Breakpoints 

Eu experimentei o mesmo problema e tentei a maioria das resoluções acima. A simples exclusão de arquivos temporários e de cache acaba funcionando para mim.

Tente remover o conteúdo dessas duas pastas:

 C:\Users\\{UserName}\AppData\Local\Microsoft\WebsiteCache 

e

C:\Users\\{UserName}\AppData\Local\Temp (em particular as pastas iisexpress e Temporary ASP.NET Files).

Isso pode ser configurado para acontecer automaticamente ao fazer logon no Windows adicionando um arquivo cmd à pasta C:\Users\\{username}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup com o seguinte conteúdo:

 rmdir C:\Users\\{username}\AppData\Local\Microsoft\WebsiteCache /s /q rmdir C:\Users\\{username}\AppData\Local\Temp /s /q 

Para mim, foi IE 9.08.8112.16241. Assim que usei o Firefox ou o Chrome, não houve debugging lenta com F10 ou F11. Eu não sei qual é o problema com o IE, mas eu oficialmente desprezo usá-lo para testes agora.

Atualização: Eu desativei todos os complementos do programa IE e está de volta à velocidade máxima. Ligá-los um de cada vez revelou que o LastPass (no meu caso) era o culpado. Eu acho que não culpo a MS depois de tudo.

Para mim, eu implementei essa dica que basicamente melhorou drasticamente o desempenho, adicionando os dois atributos a seguir à tag de compilation no web.config

  ...  

O que batch = “false” faz?

Torna a pré-compilation mais seletiva, compilando apenas as páginas que foram alteradas e exigem a recompilation

O que exatamente o optimizeCompilations está fazendo? Fonte

O ASP.NET usa um código de hash por aplicativo que inclui o estado de vários itens, incluindo a pasta bin e App_Code, e global.asax. Sempre que um domínio de aplicativo ASP.NET é iniciado, ele verifica se esse código de hash foi alterado em relação ao que foi calculado anteriormente. Se tiver, então toda a pasta codegen (onde compilados e assemblies copiados em sombra) é eliminada.

Quando essa otimização é ativada (via optimizeCompilations = “true”), o hash não leva mais em conta bin, App_Code e global.asax. Como resultado, se isso mudar, não eliminamos a pasta codegen.

Referência: elemento de compilation no msdn

Eu tive problemas de execução de execução com debugging também e eu tentei muitas opções de depurador. No meu caso enorme desempenho alcançado quando eu mudar essas opções:

Ferramentas – Opções – Depuração – Janela de Saída – (Configurações gerais de saída – Todas as saídas de debugging) – OFF

No meu caso, foi o .NET Reflector Visual Studio Extension (versão 8.3.0.93) com o VS 2012. A debugging levou 10 segundos para cada Step Over (F10).

No Visual Studio, vá para Ferramentas / Extensões e Atualizações … e desabilite o .NET Reflector Visual Studio Extension . Não esqueça de reiniciar o Visual Studio.

Eu tive problemas com a debugging lenta do Visual Studio quando o depurador “Native Code” foi habilitado. Tente desativá-lo.

No “Visual Studio 2012”, vá para:

  1. Propriedades do Projeto ->
  2. Web ->
  3. Depuradores (parte inferior da página). ->
  4. Desabilitar tudo, exceto o ASP.NET

Espero que ajude.

Perguntas semelhantes: 1 , 2

No meu caso foi

 Tools/Options/Debugging/General/Enable JavaScript debugging for ASP.NET (Chrome and IE) 

Depois de desmarcada, meu início de debugging passou de 45 a 60 segundos para 0 a 5 segundos.

Não sei se você ainda está tendo esse problema, mas depuro sites no Visual Studio anexando o depurador ao próprio processo, em vez de deixar que o VS faça isso para mim e descobri que ele melhora bastante os tempos. Eu uso uma extensão para VS chamado AttachTo e eu tenho um pequeno artigo sobre como usá-lo aqui .

Eu espero que isso ajude.

Uma vez, após uma falta de energia, tive que enfrentar o mesmo problema de lentidão cada vez que um ponto de interrupção fosse atingido ou uma exceção fosse lançada.

Eu tive a vaga de lembrar que o arquivo “suo” (no mesmo diretório que o arquivo de solução “sln”) pode ser corrompido e fazer tudo ficar lento.

insira a descrição da imagem aqui

Eu apaguei meus arquivos “suo” e estava tudo ok. A exclusão de arquivos .suo é inofensiva e apenas implica em recriar o layout do meu windows, além do projeto inicial e algumas outras personalizações não críticas.

Eu também estava enfrentando esse problema, abaixo estão as etapas que eu executo e funciona para mim sempre:

  • Excluindo o arquivo .suo da solução.
  • Excluindo os arquivos ASP.NET temporários (você pode encontrá-lo em encontrá-lo em % WINDOW% \ Microsoft.NET \ Framework \\ ASP.NET Temporary Files )
  • Excluindo todos os pontos de interrupção no aplicativo.

Meu problema lento VS foi resolvido, desativando o link do navegador

insira a descrição da imagem aqui

Se alguém perceber esse comportamento saindo do campo esquerdo, verifique se você não tem pontos de interrupção definidos no web.config. Eu devo ter definido um com um clique do mouse, e ele realmente diminuiu todas as operações de debugging.

Esvaziar o cache de símbolos funcionou para mim.

Veja: barra de menu / Ferramentas / Opções / Depuração / Símbolos / Cache de Símbolos Vazios

Depois de passar o dia inteiro esperando que os símbolos carreguem tão lento quanto a velocidade da tartaruga, misturando e alternando entre todas as combinações possíveis: Apenas Meu Código, Símbolos de Cache , Intellitrace , Just-In-Time, processos de eliminação , etc.

Minha solução foi realmente desativar o antivírus . Sim, o Windows Defender estava desacelerando o lançamento do meu projeto! Verificaria todas as dlls quando o Visual Studio as solicitasse e retardaria todo o processo de carregamento de símbolos.

Eu tenho que dizer que nossas máquinas têm ótimas especificações para compilar a solução muito rápido, então isso nunca foi um problema. Nós codificamos no VS 2013 Ultimate.

Problema semelhante desperdiçado melhor metade do meu dia!

Como a solução para o meu problema era diferente do que foi dito aqui, vou postá-lo para ajudar alguém.

O meu foi um ponto de ruptura. Eu tinha um ponto de interrupção “Break at function” (isto é, em vez de pressionar F9 em uma linha de código, nós os criamos usando a janela breakpoints) que deveria parar em uma function de biblioteca fora do meu projeto.

E eu tive “Use Intellisense para verificar o nome da function ” CHECKED. (Informação aqui )

Isso desacelerou contra o inferno (início do projeto de 2 segundos a 5 minutos).

Remover o ponto de quebra resolveu-o para sempre.

Uma coisa que funcionou para mim depois de fazer tudo o que foi dito foi:
Na janela Threads (Debug-> Windows-> Threads), defina Group by para None. Isso só pode ser feito durante a debugging.

Isso estava tendo um impacto mesmo depois de fechar essa janela.

No meu caso, notei que desabilitar minha conexão com a internet faria com que ela rodasse tão rápido quanto com ctrl-f5, então eu fui para debug-> options-> symbols e apenas desmarcou todos os locais .pdb.

Parece que o VS estava tentando se conectar a esses servidores toda vez que uma session de debugging era iniciada.

Note que desabilitar Debug-> Options-> Debugging-> General “Ativar suporte de fonte” ou “Requer que os arquivos de origem correspondam exatamente à versão original” não faria qualquer diferença.

Também há complicações nas visualizações parciais, onde há um erro na página que não é reconhecido imediatamente. Como Model.SomeValue em vez de Model.ThisValue. Pode não sublinhar e causar problemas na debugging. Isso pode ser uma dor real para pegar.

No Visual Studio:

Ferramentas -> Opções -> Depuração -> Símbolos

Escolha “Somente módulos especificados”. Clique no link “especificar módulos” e adicione um módulo em branco (clique no botão novo documento e clique em OK).

Abra a pasta de solução no Windows Explorer, feche o visual studio, apague o arquivo .suo do Windows Explorer.

Agora abra o projeto no visual studio, esperamos que o depurador seja anexado / desconectado rapidamente.

Vá para suas variables ​​de ambiente e procure pela chave _NT_SYMBOL_PATH.

Delete isso.

Voila, funcionou como um encanto.

O problema para mim foi o recurso “Browser Link” que é muito pesado quando você tem várias abas abertas para o mesmo projeto!

Porque toda vez que lançamos o projeto, ele abre uma nova guia com as comunicações do link do navegador.

Basta fechar todas as abas associadas ao projeto e manter apenas uma aberta!

Este estúdio instantaneamente visual gratuito! É Magica ! 😉

“O Browser Link é um recurso desde o Visual Studio 2013 que cria um canal de comunicação entre o ambiente de desenvolvimento e um ou mais navegadores da web. Você pode usar o Browser Link para atualizar seu aplicativo da web em vários navegadores de uma vez, o que é útil para testes entre navegadores. ”

Por favor, certifique-se de que você não abriu o Visual Studio no modo de administrador

Eu enfrentei este problema e tive que correr no modo normal.