Estou no limite. O Visual Studio normalmente é muito lento para depurar ou simplesmente carregar ("iniciar sem depurar") meus sites do ASP.NET MVC. Nem sempre: no começo, os projetos carregam bem e rápido, mas depois que carregam devagar, sempre carregam devagar depois disso. Eu poderia estar esperando 1-2 minutos ou mais.
Minha configuração:
Atualmente, estou usando o Visual Studio 2012 Express , mas também tive o mesmo problema no Visual Studio 2010 Express. Minha solução é armazenada em uma unidade de rede; especificamente, são meus documentos redirecionados para uma unidade de rede, se isso importa. (Não deveria. Há momentos em que meu site carrega muito rápido nessa configuração.)
Normalmente, carrego no Internet Explorer 9, mas o mesmo problema ocorre no Firefox.
Isso pode acontecer em qualquer projeto do ASP.NET MVC em que trabalho e parece girar em torno de ter DisplayTemplates, o que todos os meus projetos do ASP.NET MVC fazem. E é tudo C # e Razor, se isso importava.
Sintomas:
O sistema carregará meus símbolos centenas de vezes. Basicamente, o seguinte, mas existem pelo menos 300 linhas desse tipo, 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: "Contato", "Localização" e "StatusCode". Parece que o IIS está carregando símbolos duas vezes para cada vez que o modelo de exibição é chamado. Portanto, se estou exibindo uma tabela de 100 entradas que chama todos esses três modelos de exibição, são 600 símbolos separados carregados.
Esta também não é uma operação rápida. Examinando os arquivos de log que o IIS gera, são necessários cerca de 200 ms para cada símbolo carregar. Assim, atrasos super longos.
O que eu tentei:
- Versão de depuração ou lançamento, não importa.
- Colocar o meu projeto em uma implementação completa do IIS em um servidor Web é executado muito rápido, sem problemas.
- Cassini, IIS Express 7.5 e IIS Express 8.0 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 faz nada.
- Se eu reparar o IIS Express, excluir a
My Docs\IISExpress
pasta 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 fato irritante é que o mesmo projeto, com NADA alterado, pode carregar muito rapidamente às vezes, normalmente após eu reparar o IIS Express e excluir a My Docs\IISExpress
pasta. Eventualmente, "algo" acontece e é necessário apenas 2 minutos para carregar novamente. O que eu estou trabalhando não é um projeto complicado. Não há bibliotecas ou dependências externas, e meu VS.NET não tem complementos.
É importante notar que esta máquina possui o Symantec Endpoint Protection, que tem um histórico de causar estragos. Mas desativá-lo completamente (é bom ser um administrador) não resolveu o problema.
Eu tenho uma teoria neste momento. Estou pensando que isso é tudo porque estou trabalhando em uma pasta redirecionada de um compartilhamento de rede. Enquanto o depurador passava 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. Entrar no modelo gera isso:
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 modelo de exibição toda vez que é chamado, o que é novamente, centenas de vezes. Minha teoria é que o Visual Studio compila o arquivo, o salva no compartilhamento de rede, o compartilhamento de rede, de alguma forma, imprime uma nova vez, e o Visual Studio pensa que o arquivo foi alterado e, portanto, o Visual Studio o recompila novamente. Apenas uma teoria; Eu realmente não tenho ideia.
Por um lado, aparentemente eu tenho arquivos offline (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 o meu projeto, como está, para o C: local, corrige-o. Carrega muito rapidamente. Mas isso não é ideal em um ambiente de trabalho. Perco as versões anteriores, meu código não é copiado, a menos que eu o copie manualmente e não seja mais compartilhado com ninguém.
Eu posso me contentar em copiá-lo de C para o compartilhamento de rede, se for o caso. É muito mais irritante esperar dois minutos para cada carregamento de página.
Respostas:
Aqui está como eu resolvi o problema "carregamento lento de símbolos" no Visual Studio 2012:
Vá para Ferramentas -> Opções -> Depuração -> Geral
Marque a caixa de seleção ao lado de "Ativar apenas 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 do computador local para armazenar símbolos em cache. Chamei o meu de "Cache de símbolo" e coloquei em Documents -> Visual Studio 2012.
Clique em "Carregar todos os símbolos" e aguarde o download dos símbolos nos servidores da Microsoft, o que pode demorar um pouco. Observe que o botão Carregar todos os símbolos está disponível apenas durante a depuração.
Desmarque a marca de seleção ao lado de "Microsoft Symbol Servers" para impedir que o Visual Studio consulte remotamente os servidores da Microsoft.
Clique OK".
A partir de agora, o carregamento do símbolo deve ser muito mais rápido.
Observe que, se você fizer alterações / downloads em assemblies da Microsoft, poderá ser necessário voltar à caixa de diálogo Símbolos e "Carregar todos os símbolos" novamente.
fonte
Desativar o intelliTrace corrigiu isso para mim.
No Visual Studio, Ferramentas -> Opções -> IntelliTrace
Em seguida, desmarque a caixa de seleção "Ativar IntelliTrace".
fonte
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 verificar se esse é o seu problema, depure-> windows-> breakpoints Se houver algum, exclua-os.
Saunders, mencionou que ele verificou isso, mas não foi mencionado nas soluções para esse problema. Talvez conhecimento comum para alguns, mas não para todos nós.
fonte
Excluí a pasta "Arquivos temporários do ASP.NET" e o carregamento da minha página localhost melhorou drasticamente. Aqui está o caminho ...% temp% \ Arquivos temporários do ASP.NET \
fonte
Você ativou o FusionLog?
Meu VisualStudio demorou muito para iniciar, abrir a solução e carregar símbolos ao iniciar a depuração. Estava lento apenas na minha máquina, mas não em outras máquinas.
O FusionLog grava toneladas de material de log no disco. Desativá-lo no RegEdit resolveu tudo, no meu caso.
Esta é a chave FusionLog no registro:
Verifique o valor do ForceLog (1 ativado, 0 desativado).
fonte
FusionLog
há muito tempo e esqueci de desativá-lo. Agora, a depuração doASP.NET MVC
aplicativo é muito mais rápida. Graças a Deus e @rkawano. :)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:
e
C:\Users\\{UserName}\AppData\Local\Temp
(em particular, as pastas iisexpress e Arquivos temporários do ASP.NET).Isso pode ser configurado para ocorrer automaticamente no logon no Windows, adicionando um arquivo cmd à
C:\Users\\{username}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
pasta com o seguinte conteúdo:fonte
Acho que finalmente posso pelo menos conhecer a causa, embora não seja 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. Encerrar a tarefa em cada um deles finalmente resolveu o problema de maneira confiável. [esperançosamente]
(Observe que o conhost.exe não é um processo do Visual Studio, embora o Visual Studio o use. Portanto, outros usuários por aí podem ter outros aplicativos por aí que executam o conhost.exe. Eu sei que minha máquina não faz e é por isso que posso finalizar com segurança todas as tarefas, exceto a YMMV.)
Por que isso acontece? Parece ocorrer quando abro mais de um projeto ao mesmo tempo, o que costumo fazer com frequência, mesmo que eu apenas crie e depure um deles a qualquer momento.
Editar # 1 - Infelizmente, esta não é uma "bala de prata". Nem sempre funciona para mim. Normalmente, quando as coisas ficam lentas, eu fecho todas as minhas sessões do Visual Studio, depois vou para o gerenciador de tarefas e encerro qualquer instância, conhecost.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 acho que o melhor curso de ação é provavelmente não criar e depurar código de um compartilhamento de rede / pasta redirecionado.
Editar # 2 - Dois anos depois, e isso ainda é um problema para mim no Visual Studio Community 2013, mas pelo menos pareci encontrar a tarefa culpada: Explorer.exe . Sim, quem sabia. No momento em que termino essa tarefa, bam, a página é carregada em um único segundo.
Se eu tiver um navegador de arquivos do Windows Explorer aberto na minha unidade de rede redirecionada (geralmente porque é onde está o meu código), esse problema parece ocorrer. Fechar a janela não é suficiente, eu tenho que matar toda a tarefa Explorer.exe. Eu só podia adivinhar o que está fazendo ... enlouquecendo com alças de arquivo?
Normalmente, posso usar o gerenciador de tarefas para iniciar uma nova tarefa do explorer.exe (só posso usar alt-tab), e o Visual Studio continuará carregando bem e rapidamente. Mas se eu abrir o Windows Explorer novamente, ele quase sempre voltará ao super-slow-mo.
Portanto, se você tem um compartilhamento de rede redirecionado, experimente. É melhor do que trabalhar localmente.
fonte
As opções acima são todas boas soluções e eu tentei todas elas, mas obtive a solução aqui , que é
fonte
Para mim, era o IE 9.08.8112.16241. Assim que eu usei o Firefox ou o Chrome, não houve depuração lenta com o F10 ou o F11. Não sei qual é o problema do IE, mas oficialmente desprezo usá-lo para testes agora.
Atualização: desliguei todos os complementos de programa do IE e ele voltou à velocidade máxima. Ligá-los um de cada vez revelou que o LastPass (no meu caso) era o culpado. Acho que não culpo a MS, afinal.
fonte
Para mim, implementei essa dica, que basicamente melhorou drasticamente o desempenho adicionando os dois atributos a seguir à tag de compilação no web.config
O que batch = "false" faz?
O que exatamente as otimizeCompilations estão fazendo? Fonte
Referência: Elemento de compilação no msdn
fonte
Também tive problemas de desempenho de execução com depuração e tentei muitas opções de depurador. No meu caso, enorme desempenho alcançado quando altero essas opções:
Ferramentas - Opções - Depuração - Janela Saída - (Configurações gerais de saída - Todas as saídas de depuração) - DESLIGADO
fonte
No meu caso, era a extensão do .NET Reflector Visual Studio (versão 8.3.0.93) com o VS 2012. A depuração estava demorando 10 segundos para cada etapa (F10).
No Visual Studio, vá para Ferramentas / Extensões e Atualizações ... e desative a Extensão do .NET Reflector Visual Studio . Não se esqueça de reiniciar o Visual Studio.
fonte
Eu tive problemas com a depuração lenta do Visual Studio quando o depurador "Native Code" foi ativado. Tente desativá-lo.
No "Visual Studio 2012", vá para:
Espero que ajude.
Perguntas semelhantes: 1 , 2
fonte
No meu caso foi
Depois de desmarcar isso, meu início de depuração passou de 45-60 segundos para 0-5 segundos.
fonte
Uma vez, após uma queda de energia, tive que enfrentar o mesmo problema de lentidão cada vez que um ponto de interrupção era atingido ou uma exceção era lançada.
Tive a vaga lembrança de que o arquivo "suo" (no mesmo diretório do arquivo de solução "sln") pode estar corrompido e tornar tudo lento.
Eu apaguei meus arquivos "suo" e tudo estava ok. A exclusão de arquivos .suo é inofensiva e implica apenas recriar o layout do meu windows, além do projeto inicial e algumas outras personalizações não críticas.
fonte
.vs
pasta em versões posteriores do Visual Studio. Apague isso.Eu também estava enfrentando esse problema. Abaixo estão as etapas que eu executo e ele funciona para mim sempre:
fonte
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 permitir que o VS faça isso por mim, e achei que ele melhorou bastante os tempos. Eu uso uma extensão para o VS chamada AttachTo e tenho um pequeno artigo sobre como usá-lo aqui .
Eu espero que isso ajude.
fonte
Meu problema lento do VS foi resolvido desativando o link do navegador
fonte
Se alguém perceber esse comportamento saindo do campo esquerdo, verifique se você não tem nenhum ponto de interrupção definido no web.config. Eu devo ter definido um com um clique perdido do mouse, e realmente diminuiu todas as operações de depuração.
fonte
Depois de passar o dia todo esperando que os símbolos carreguem tão lentamente quanto a velocidade da tartaruga, misturando e alternando entre todas as combinações possíveis: Just My Code, símbolos de cache , Intellitrace , Just-In-Time, processos de extinção , etc.
Minha solução foi realmente desativar o antivírus . Sim, o Windows Defender estava atrasando o lançamento do meu projeto! Ele verificaria todas as DLLs, conforme solicitado pelo Visual Studio, e atrasaria todo o processo de carregamento de símbolos.
Devo dizer que nossas máquinas têm ótimas especificações para compilar a solução muito rápido, o que nunca foi um problema. Codificamos no VS 2013 Ultimate.
fonte
Esvaziar o cache de símbolos funcionou para mim.
Consulte: barra de menus / Ferramentas / Opções / Depuração / Símbolos / Esvaziar cache de símbolos
fonte
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 publicá-la para ajudar outras pessoas.
O meu era um ponto de interrupção. Eu tinha um ponto de interrupção "Break at function" (ou seja, em vez de pressionar F9 em uma linha de código, nós os criamos usando a janela de pontos de interrupção) que deveria parar em uma função de biblioteca fora do meu projeto.
E eu tinha "Use Intellisense para verificar o nome da função " VERIFICADO. (Informações aqui .)
Isso ficou mais lento do que o inferno (inicialização do projeto de 2 segundos a 5 minutos).
A remoção do ponto de interrupção resolveu o problema definitivamente.
fonte
Uma coisa que funcionou para mim depois de fazer tudo o que foi
dito acima foi: Na janela Threads (Debug-> Windows-> Threads), defina Agrupar por como Nenhum. Isso só pode ser feito durante a depuração.
Isso teve um impacto mesmo depois de fechar a janela.
fonte
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 pressione OK).
fonte
Abra a pasta da solução no windows explorer, feche o visual studio, exclua o arquivo .suo do windows explorer.
Agora abra o projeto no visual studio, espero que o depurador seja anexado / desanexado rapidamente.
fonte
Para mim, eram pontos de interrupção condicionais. Essas parecem realmente desacelerar as coisas.
fonte
Vá para suas variáveis de ambiente e procure a chave _NT_SYMBOL_PATH.
Delete isso.
Voila, funcionou como um encanto.
fonte
value == symsrv*symsrv.dll*C:\WINDOWS\Symbols*http://msdl.microsoft.com/download/symbols
ainda não há dados!O problema para mim foi o recurso "Link do navegador" que é muito pesado quando você tem várias guias abertas para o mesmo projeto!
Porque toda vez que lançamos o projeto, ele abre uma nova guia com as comunicações por link do navegador.
Apenas feche todas as guias associadas ao projeto e mantenha apenas uma aberta!
Este estúdio visual instantaneamente grátis! É Magica ! ;-)
fonte
Uma solução rápida e fácil para aqueles que não têm muito desvio das configurações padrão do VS.
Ferramentas -> Configurações de importação e exportação -> Sim, salve minhas configurações atuais -> Visual C #
Estou certo de que a solução acima também funcionaria com outras configurações padrão. No meu caso, algo atrapalhou minhas configurações de carregamento de símbolos, mas não foi possível corrigi-lo, mesmo que eu tenha tentado algumas das soluções sugeridas.
fonte
Verifique se você não abriu o Visual Studio no modo administrador
Eu enfrentei esse problema e tive que executar no modo normal.
fonte