Depuración / carga de Visual Studio muy lenta

Estoy en ingenio final. Por lo general, Visual Studio es muy lento para depurar o solo carga (“iniciar sin depurar”) mis sitios ASP.NET MVC. No siempre: al principio, los proyectos se cargarán bien y rápido, pero una vez que cargan despacio, siempre cargarán lento después de eso. Podría estar esperando 1-2 minutos o más.

Mi configuración:

Estoy usando Visual Studio 2012 Express , actualmente, pero también he tenido el mismo problema en Visual Studio 2010 Express. Mi solución está almacenada en una unidad de red; específicamente, es Mis Documentos redirigidos a una unidad de red, si es que importa. (No debería. Hay momentos en que mi sitio se carga muy rápido con esta configuración).

Normalmente uso Internet Explorer 9, pero el mismo problema ocurre en Firefox.

Esto puede suceder en cualquier proyecto ASP.NET MVC en el que yo trabaje, y parece girar en torno a tener DisplayTemplates, que hacen todos mis proyectos ASP.NET MVC. Y es todo C # y Razor, si eso importaba.

Síntomas:

El sistema cargará mis símbolos cientos de veces. Básicamente, lo siguiente, pero hay al menos 300 de esas filas, cada una con archivos DLL ligeramente diferentes para los mismos CSHTML:

'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. 

En lo anterior, tengo tres plantillas de pantalla: “Contacto”, “Ubicación” y “Código de estado”. Parece que IIS está cargando símbolos dos veces por cada vez que se llama a displaytemplate. Por lo tanto, si estoy visualizando una tabla de 100 entradas que llama a las tres plantillas, se cargan 600 símbolos por separado.

Esta tampoco es una operación rápida. Al buscar en los archivos de registro que genera IIS, se tardan unos 200 ms en cargar cada símbolo. Por lo tanto, retrasos súper largos.

Lo que he intentado:

  • Versión de depuración o versión, no importa.
  • Poner mi proyecto en una implementación completa de IIS en un servidor web lo ejecuta súper rápido sin problemas.
  • Cassini, IIS Express 7.5 e IIS Express 8.0 tienen todos el problema.
  • Eliminar todos los puntos de interrupción no hace nada.
  • Solución limpia , o eliminar .suo también no hacen nada.
  • Si repare IIS Express, o My Docs\IISExpress carpeta My Docs\IISExpress , o reparo / reinstalo Visual Studio → el problema PUEDE desaparecer, pero solo por un tiempo, antes de que vuelva.

Cualquier consejo es apreciado.

Para responder más preguntas, sí, mi máquina definitivamente tiene los caballos de fuerza. Lo más exasperante es que el mismo proyecto, con NADA alterado, puede cargar muy muy rápido a veces, generalmente después de reparar IIS Express y eliminar la carpeta My Docs\IISExpress . Eventualmente, “algo” sucede y se reduce a 2 minutos para volver a cargar. En lo que estoy trabajando no es un proyecto complicado. No hay bibliotecas externas ni dependencias, y mi VS.NET no tiene complementos.

Cabe destacar que esta máquina tiene Symantec Endpoint Protection, que tiene un historial de causar esgulps. Pero deshabilitarlo directamente (es bueno ser un administrador) no solucionó el problema.

Tengo una teoría en este punto. Estoy pensando que esto es todo porque estoy trabajando en una carpeta redirigida desde un recurso compartido de red. Mientras el depurador estaba pasando por sus cientos de líneas de “símbolos cargados”, me detuve para ver qué estaba haciendo. Estaba en mi código, cargando el DisplayTemplate que tenía. Entrando en la plantilla de salida esto:

 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.Comstacktion.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.Comstacktion.BuildManager.CompileWebFile' Step into: Stepping over non-user code 'System.Web.Comstacktion.BuildManager.GetVPathBuildResultInternal' Step into: Stepping over non-user code 'System.Web.Comstacktion.BuildManager.GetVPathBuildResultWithNoAssert' Step into: Stepping over non-user code 'System.Web.Comstacktion.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 Visual Studio está recomstackndo mi plantilla de pantalla cada vez que se la llama, que es otra vez, cientos de veces. Mi teoría es que Visual Studio comstack el archivo, lo guarda en el recurso compartido de red, el recurso compartido de red y de alguna manera marca una nueva hora en él, y luego Visual Studio cree que el archivo ha cambiado y, por lo tanto, Visual Studio lo vuelve a comstackr. Solo una teoría; Realmente no tengo idea.

Por un lado, aparentemente tengo archivos sin conexión (esta es una computadora de escritorio en una oficina, no me importa nada). Deshabilitaré, reiniciaré y volveré a intentar mañana.

Además, mover mi proyecto, como está, a la C local: lo arregla. Se carga muy rápido. Pero esto no es ideal en un ambiente de trabajo. Perdí las versiones anteriores, mi código no está respaldado en absoluto a menos que lo copie manualmente y ya no se comparta con nadie.

Puedo arreglarme con copiarlo de C a la red compartida, si se trata de eso. Es mucho más molesto esperar dos minutos por cada carga de página.

Así es como resolví el problema de la “carga lenta de símbolos” en Visual Studio 2012:

  • Vaya a Herramientas -> Opciones -> Depuración -> General

  • COMPRUEBE la marca de verificación junto a “Habilitar solo mi código”.

  • Vaya a Herramientas -> Opciones -> Depuración -> Símbolos

  • Haga clic en el botón “…” y cree / seleccione una nueva carpeta en algún lugar de su computadora local para almacenar símbolos en caché. Llamé a la mía “Símbolo de caché” y lo puse en Documentos -> Visual Studio 2012.

  • Haga clic en “Cargar todos los símbolos” y espere a que los símbolos se descarguen de los servidores de Microsoft, lo que puede llevar un tiempo. Tenga en cuenta que el botón Cargar todos los símbolos solo está disponible durante la depuración.

  • DESACTIVE la marca de verificación junto a “Servidores de símbolos de Microsoft” para evitar que Visual Studio consulte de forma remota los servidores de Microsoft.

  • Haga clic en Aceptar”.

A partir de ahora, la carga del símbolo debería ser mucho más rápida.

Tenga en cuenta que si realiza cambios / descargas en los ensamblados de Microsoft, es posible que deba volver al cuadro de diálogo Símbolos y “Cargar todos los símbolos” nuevamente.

Apagar intelliTrace solucionó esto por mí.

En Visual Studio, Herramientas -> Opciones -> IntelliTrace

Luego, desmarque la checkbox “Habilitar IntelliTrace”.

Deshabilitar IntelliTrace en Visual Studio 2012

Nada de esto funcionó para mí, pero encontré un punto de interrupción en un símbolo que se eliminó. Parece que 2010 estaba pendiente de eso. Para ver si este es su problema, depure-> windows-> breakpoints. Si hay alguno, simplemente elimínelos.

Saunders mencionó que lo verificó, pero no se mencionó en las soluciones para este problema. Tal vez el conocimiento común para algunos, pero no para todos nosotros.

Eliminé la carpeta “Archivos temporales de ASP.NET” y la carga de la página de mi servidor local mejoró drásticamente. Aquí está la ruta …% temp% \ Archivos temporales ASP.NET \

Creo que al menos finalmente puedo saber la causa, aunque no el motivo. Cuando el problema comenzó a ocurrir nuevamente, noté una tonelada de procesos “conhost.exe” huérfanos. Cerraría Visual Studio y permanecerían abiertos. Finalizar la tarea en cada uno de ellos finalmente ha resuelto el problema de manera confiable. [Ojalá]

(Solo tenga en cuenta que conhost.exe no es un proceso de Visual Studio, pero Visual Studio lo usa. Por lo tanto, otros usuarios pueden tener otras aplicaciones que ejecuten conhost.exe. Sé que mi máquina no funciona y por eso puedo finalice la tarea de forma segura todos ellos excepto YMMV).

En cuanto a por qué sucede esto? Parece que ocurre cuando abro más de un proyecto a la vez, lo cual tiendo a hacer a menudo, aunque solo construyo y depuro uno de ellos en cualquier momento.


Edit # 1 – Desafortunadamente no es una “bala de plata”. No siempre funciona para mí. Normalmente, cuando las cosas se vuelven lentas, simplemente cierro todas mis sesiones de Visual Studio, luego voy al administrador de tareas y finalizo cualquier instancia del mismo, conhost.exe, iisexpress.exe Microsoft.VisualStudio.Web.Host.exe y MSBuild.exe Puedo encontrar.

Normalmente, después de eso, cuando reinicio mi proyecto, se carga rápidamente. Pero no siempre.

Realmente creo que el mejor curso de acción es probablemente no comstackr y depurar código de una carpeta redirigida / recurso compartido de red.


Editar # 2 – Dos años después, y esto sigue siendo un problema para mí en Visual Studio Community 2013, pero al menos al menos encontré la tarea culpable: Explorer.exe . Sí, quién sabía. En el momento en que termino esa tarea, bam, la página se carga en un solo segundo.

Si tengo un explorador de archivos de Windows Explorer abierto a mi unidad de red redirigida (que a menudo es donde está mi código), parece que este problema ocurre. Cerrar la ventana no es suficiente, tengo que matar toda la tarea Explorer.exe. Solo pude adivinar lo que está haciendo … volviéndome loco con los manejadores de archivos.

Normalmente puedo usar el administrador de tareas para iniciar una nueva tarea explorer.exe (solo puedo tomar tantas alt-tabbing), y Visual Studio continuará cargando agradable y rápido. Pero si vuelvo a abrir el Explorador de Windows nuevamente, casi siempre vuelve a ser super lento.

Por lo tanto, si tiene un recurso redireccionado compartido, pruébelo. Seguro que es mejor que trabajar localmente.

¿Ha habilitado FusionLog?

Mi VisualStudio fue muy lento para iniciar, abrir la solución y cargar símbolos cuando se inicia la depuración. Fue lento solo en mi máquina, pero no en otras máquinas.

FusionLog escribe toneladas de cosas de registro en el disco. Solo deshabilitarlo en RegEdit resolvió todo, en mi caso.

Esta es la clave FusionLog en el registro:

 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion 

Marque el valor de ForceLog (1 habilitado, 0 deshabilitado).

Lo anterior son todas buenas soluciones y las intenté todas, pero obtuve la solución aquí , que es

 Debug -> Delete All Breakpoints 

Experimenté el mismo problema y probé la mayoría de las resoluciones anteriores. Simplemente eliminar los archivos de caché y temp terminan trabajando para mí.

Intente eliminar el contenido de estas dos carpetas:

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

y

C:\Users\\{UserName}\AppData\Local\Temp (en particular, las carpetas de archivos iisexpress y temporales de ASP.NET).

Esto se puede configurar para que ocurra automáticamente al iniciar sesión en Windows agregando un archivo cmd a la carpeta C:\Users\\{username}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup con el siguiente contenido:

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

Para mí fue IE 9.08.8112.16241. Tan pronto como utilicé Firefox o Chrome, no hubo problemas de depuración con F10 o F11. No sé cuál es el problema con IE pero oficialmente desprecio usarlo para probar ahora.

Actualización: he desactivado todos los complementos del progtwig IE y ha vuelto a la velocidad máxima. Encendiéndolos uno a la vez, revelé que LastPass (en mi caso) era el culpable. Supongo que no culpo a MS después de todo.

Para mí, implementé esta sugerencia que básicamente mejoró drásticamente el rendimiento agregando los siguientes dos atributos a la etiqueta de comstackción en web.config

  ...  

¿Qué hace batch = “false”?

Hace que la comstackción previa sea más selectiva comstackndo solo páginas que han cambiado y requieren volver a comstackr

¿Qué es exactamente lo que optimizeComstacktions está haciendo? Fuente

ASP.NET utiliza un código hash por aplicación que incluye el estado de una serie de elementos, incluidos el bin y la carpeta App_Code, y global.asax. Cada vez que se inicia un dominio de la aplicación ASP.NET, se comprueba si este código hash ha cambiado desde lo que se calculó previamente. Si lo tiene, se borrará toda la carpeta codegen (donde los ensambles comstackdos y copiados en vivo) se borran.

Cuando esta optimización está activada (a través de optimizeComstacktions = “true”), el hash ya no tiene en cuenta bin, App_Code y global.asax. Como resultado, si cambian, no eliminamos la carpeta codegen.

Referencia: elemento de comstackción en msdn

Tuve problemas de rendimiento de ejecución con la depuración también e intenté muchas opciones de depurador. En mi caso, gran rendimiento logrado cuando cambio estas opciones:

Herramientas – Opciones – Depuración – Ventana de salida – (Configuración de salida general – Toda la salida de depuración) – DESACTIVADA

En mi caso, fue .NET Reflector Visual Studio Extension (versión 8.3.0.93) con VS 2012. La depuración tomó 10 segundos para cada Step Over (F10).

En Visual Studio, vaya a Herramientas / Extensiones y Actualizaciones … y deshabilite la extensión Visual Studio de .NET Reflector . No olvide reiniciar Visual Studio.

Tuve problemas con la depuración lenta de Visual Studio cuando se habilitó el depurador “Código nativo” . Intenta deshabilitarlo.

En “Visual Studio 2012” ve a:

  1. Propiedades del proyecto ->
  2. Web ->
  3. Depuradores (parte inferior de la página). ->
  4. Deshabilitar todos excepto ASP.NET

Espero eso ayude.

Preguntas similares: 1 , 2

En mi caso fue

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

Una vez que desmarqué esto, mi inicio de depuración fue de 45-60 segundos a 0-5 segundos.

No sé si sigues teniendo este problema, pero depuro los sitios en Visual Studio adjuntando el depurador al proceso en lugar de dejar que VS lo haga por mí, y he descubierto que mejora mucho los tiempos. Utilizo una extensión para VS llamada AttachTo y tengo un pequeño artículo sobre cómo lo uso aquí .

Espero que esto ayude.

Una vez, después de un corte de energía, tuve que enfrentar el mismo problema de lentitud cada vez que se golpeaba un punto de interrupción o se lanzaba una excepción.

Tuve el vago recuerdo de que el archivo “suo” (en el mismo directorio que el archivo de solución “sln”) puede estar dañado y hacer que todo se ralentice.

enter image description here

Eliminé mis archivos “suo” y todo estaba bien. La eliminación de archivos .suo es inofensiva y solo implica recrear el diseño de Windows más el proyecto inicial y algunas otras personalizaciones no críticas.

También me enfrenté a este problema, a continuación se detallan los pasos que realizo y funciona para mí siempre:

  • Eliminando el archivo .suo de la solución.
  • Eliminar los archivos temporales de ASP.NET (Puede encontrarlo en find % at % WINDOW% \ Microsoft.NET \ Framework \\ Archivos temporales de ASP.NET )
  • Eliminando todos los puntos de interrupción en la aplicación.

Mi problema de VS lento se resolvió al deshabilitar el enlace del navegador

enter image description here

Si alguien nota que este comportamiento sale del campo izquierdo, verifique para asegurarse de que no tenga ningún punto de interrupción establecido en web.config. Debo haber configurado uno con un clic del mouse, y realmente ralentizó todas las operaciones de depuración.

Vaciar el caché de símbolos funcionó para mí.

Ver: barra de menú / Herramientas / Opciones / Depuración / Símbolos / Vacío Caché de símbolos

Después de pasar todo el día esperando que los símbolos se carguen tan lentamente como la velocidad de la tortuga, mezclando y alternando entre todas las combinaciones posibles: solo mi código, símbolos de almacenamiento en caché , Intellitrace , Just-In-Time, procesos de eliminación , etc.

Mi solución fue desactivar el antivirus . Sí, Windows Defender estaba frenando el lanzamiento de mi proyecto. Verificaría todos los dlls cuando Visual Studio los solicitó y ralentizó todo el proceso de carga de símbolos.

Debo decir que nuestras máquinas tienen excelentes especificaciones para comstackr la solución realmente rápido, por lo que nunca fue un problema. Codificamos en VS 2013 Ultimate.

¡Problema similar desperdició la mitad de mi día!

Como la solución para mi problema era diferente de lo que se dice aquí, la voy a publicar para que pueda ayudar a otra persona.

El mío fue un punto de inflexión. Tuve un punto de interrupción “Romper en función” (es decir, en lugar de presionar F9 en una línea de código, los creamos usando la ventana de puntos de interrupción) que se supone que se detiene en una función de biblioteca fuera de mi proyecto.

Y tuve “Usar Intellisense para verificar el nombre de la función ” MARCADO. (Información aquí )

Esto se ralentizó vs hell (arranque del proyecto de 2 segundos a 5 minutos).

Eliminar el punto de ruptura lo resolvió para siempre.

Una cosa que funcionó para mí después de hacer todo lo anterior fue:
En la ventana Subprocesos (Depurar-> Windows-> Subprocesos), configure Agrupar por Ninguno. Esto solo se puede hacer durante la depuración.

Esto estaba teniendo un impacto incluso después de cerrar esa ventana.

En mi caso noté que deshabilitar mi conexión a Internet haría que se ejecutara tan rápido como con ctrl-f5, así que fui a depurar-> opciones-> símbolos y simplemente desmarqué todas las ubicaciones .pdb.

Parece que VS intentaba conectarse a estos servidores cada vez que se iniciaba una sesión de depuración.

Tenga en cuenta que deshabilitar Depurar-> Opciones-> Depuración-> General “Habilitar soporte de origen” o “Requerir que los archivos fuente coincidan exactamente con la versión original” no haría ninguna diferencia.

También hay complicaciones en vistas parciales donde hay un error en la página que no se reconoce de inmediato. Como Model.SomeValue en lugar de Model.ThisValue. Puede no subrayar y causar problemas en la depuración. Esto puede ser un verdadero dolor para atrapar.

En Visual Studio:

Herramientas -> Opciones -> Depuración -> Símbolos

Elija “Solo módulos especificados”. Haga clic en el enlace “especificar módulos” y agregue un módulo en blanco (haga clic en el botón del nuevo documento y presione OK).

Abra la carpeta de la solución en el explorador de Windows, cierre el estudio visual, elimine el archivo .suo del explorador de Windows.

Ahora abra el proyecto en Visual Studio, con suerte el depurador se adjuntará / desconectará rápidamente.

Vaya a las variables de su entorno y busque la clave _NT_SYMBOL_PATH.

Bórralo.

Voila, trabajó como un encanto.

El problema para mí fue la característica “Enlace de navegador” que es muy pesada cuando tienes varias tabs abiertas para el mismo proyecto.

Porque cada vez que lanzamos el proyecto, abre una nueva pestaña con las comunicaciones del enlace del navegador.

¡Solo cierre todas las tabs asociadas con el proyecto y mantenga solo una abierta!

¡Este estudio visual instantáneamente gratis! Es magia ! 😉

“Browser Link es una característica desde Visual Studio 2013 que crea un canal de comunicación entre el entorno de desarrollo y uno o más navegadores web. Puede usar el Enlace del navegador para actualizar su aplicación web en varios navegadores a la vez, lo cual es útil para realizar pruebas entre navegadores “.

Asegúrate de no haber abierto Visual Studio en modo administrador

Enfrenté este problema y tuve que correr en modo normal.