2011-01-04 13 views
12

Estoy trabajando en una solución de mediano tamaño ASP.NET MVC con Visual Studio 2010 y Resharper. El proyecto estaba ardiendo rápidamente cuando comencé a desarrollarlo hace 1 1/2 años, pero con el tiempo se ha vuelto más lento, no solo la compilación, sino también el tiempo que le lleva a ASP.NET reiniciar el sitio web. Como estoy practicando TDD y refactorizando con bastante frecuencia, con frecuencia necesito recompilar y volver a ejecutar mis pruebas, por lo que estoy buscando formas de mitigar esto si es posible.Agilización de la compilación y pruebas unitarias en Visual Studio 2010/Resharper/ASP.NET MVC

El problema en detalle

Me lleva unos 20-25 segundos de comenzar a compilar el proyecto para poder ver el resultado en un navegador web.

Ejecutar una prueba unitaria (solo una prueba, no toda la suite) con el corredor de prueba Resharper también es muy lento (unos 15-20 segundos). Por alguna extraña razón, parece que Resharper se toma la mayor parte del tiempo inicializando la ejecución de la prueba y solo gasta una pequeña fracción en la ejecución de la prueba.

lo que ya he hecho:

  • sustituido el disco duro con un SSD (enorme impacto)
  • Movido compilación de ASP.NET y el directorio directorio Temp de Windows a SSD-como (hardware) Unidad RAM (gran impacto, pero eso fue antes de SSD)
  • Compilación automática deshabilitada de un proyecto que raramente modifico (Pequeño impacto ya que ese proyecto es pequeño de todos modos).
  • Eliminado referencias innecesarias a .NET y bibliotecas de terceros (impacto muy pequeño, si corresponde)
  • Algunos trucos de magia negra se tratan en this blog post. (impacto muy pequeño, si hay alguno).

Sin embargo, todavía estoy atascado con las cifras (¿lento?) De arriba y siento que esto está perjudicando mi productividad. Ahora me pregunto qué hacer a continuación.

Mi configuración actual del sistema:

  • Core 2 Quad Q6600 CPU
  • 4 GB DDR2 800 RAM
  • 120 GB SSD
  • Windows 7 x64
  • Visual Studio 2010 Ultimate con ReSharper 5.5

las especificaciones de mi solución:

  • 22.000 líneas de .NET C# 4 Código
  • 3 proyectos: Una ASP.NET MVC, un proyecto de prueba, una biblioteca de uso general pequeño es incluida por los otros dos y el cual No compilo a menos que algo haya cambiado.
  • 35 referencias a otras bibliotecas (.NET y otras cosas de código abierto)
  • ~ 200 Vistas
  • 850 Unidad de Pruebas de

Ahora mis preguntas:

  • Would actualizar mi memoria RAM de 8 GB me podía dar un impulso significativo rendimiento ?
  • ¿Estas cifras son normales? O tal vez esto podría ser un problema con mi solución?
  • ¿Qué probarías a continuación (aparte de comprar una computadora completamente nueva)?

Gracias,

Adrian

Editar: Una cosa particularmente extraño es que cuando pulso el botón "Generar solución", Visual Studio gasta unos 8 segundos me muestran un símbolo de espera hasta que se en realidad comienza a compilar y la ventana de compilación se está actualizando. El IDE no es receptivo durante este período. Esa es una buena parte del tiempo de compilación real. Me pregunto qué está haciendo Visual Studio durante este período.

+0

¿Cuántos proyectos? ¿Cómo es el estado de dependencia interna de los proyectos? Si vuelve a ejecutar la misma prueba ¿tarda el mismo tiempo? – Jaime

+0

¿Puedes descargar cualquier proyecto? Esto los excluye del proceso de compilación ... –

+0

Tengo una configuración similar con 6Gb de RAM pero sin SSD. El VS2010 es extremadamente lento para cargar y compilar: he descubierto que inhabilitar ReSharper tiene un efecto muy positivo. Desafortunadamente, he llegado a confiar en esta muleta en particular ... er ... plug-in y he decidido que el dolor probablemente valga la pena en mi caso. – nerraga

Respuesta

0

Puede configurar un servidor de compilación que se desarrollará:

  • Construir
  • pruebas
  • despliegue

Vas a tener que esperar más o menos la misma cantidad de tiempo para ver el la nueva versión se activa, pero no consumirá los recursos de desarrollo de tu PC.

+0

Sí, pero aún no sabría qué hacer con el tiempo ganado recientemente. Si fue un par de minutos, pude leer algunos blogs o navegar SO, pero 30 segundos no son suficientes para hacer algo que valga la pena. –

6

Para esa solución de tamaño, parece que su hardware está bien y debe ser lo suficientemente rápido como para construir y probar. Lo que he encontrado es que la mayoría de los problemas de rendimiento de compilación (en mi caso, de todos modos) están relacionados con las dependencias del proyecto y no con el tiempo de compilación real. Me par de ideas para ayudarle a encontrar el problema:

  1. intente encender el "proyecto de verbosidad resultados de generación de MSBuild" a "diagnóstico" (Opciones-> Proyectos y Soluciones> Construir y Ejecutar), también se instala el Extensiones de VSCommands (contiene una extensión de estadísticas de compilación que muestra el tiempo empleado en cada paso) y compruebe cuál es la parte que está hablando más tiempo.

  2. ¿Las dependencias de otros proyectos (las 35 a las que se refiere) en el GAC, o están dispersas a través de su HD? ¿Son referencias de actualización automática (tienen un archivo .refresh debajo)? Maay tratar de simplificar la resolución de estas dependencias, es decir copia local todos los archivos DLL en el directorio bin y ver si ayuda

3

Usted puede probar la función Resharper.Internal secreta "Al mismo tiempo que la construcción de MSBuild" como se describe here .

+0

¡Gracias por la pista! Esta es una joya bien escondida de hecho. Lamentablemente, no parece funcionar con mi proyecto (obtengo algunos errores oscuros junto con algunas excepciones de Resharper), pero podría ser útil para proyectos futuros. –

+0

Parece que esta opción no existe en Resharper 6.1 EAP. – adamjford

1

Como este es un proyecto de MVC, asegúrese de que las "Vistas de compilación" de su proyecto estén desactivadas.

  1. derecho del archivo Haga clic en Proyecto -> Proyecto de descarga en su proyecto MVC
  2. clic derecho proyecto Archivo -> Editar Proyecto
  3. Compruebe el ajuste ... falsa
  4. Guardar y haga clic derecho -> Proyecto de recarga .

Lo dejo para que el compilador encuentre mis errores antes que mis clientes. Pero Build Views es terriblemente lento.

+0

Ya conocía esta configuración desde hace mucho tiempo (incluso escribí un artículo de blog sobre ella una vez), pero gracias por la pista. Tienes razón, ralentiza la construcción. Lo uso solo en el modo de lanzamiento para asegurarme de que no haya errores ortográficos en mi código fuente en las vistas. –

1

que tenía un problema similar. Desde que presioné el botón 'Run tests', tardé un minuto aproximadamente en ejecutar la prueba.

Mi problema era que tenía la configuración de las pruebas que apuntan a 'Trace and Impact' en lugar de 'Local'.

Para seleccionar las configuraciones de prueba, vaya al menú 'Test' y luego 'Select Active Test Settings > Local'.

Eso funcionó para mí.

0

problema similar aquí, que había dejado 'cobertura de código' encendido.

Cuestiones relacionadas