2012-09-05 21 views
5

Tengo una solución de Visual Studio que consta de unos 100 proyectos. La mayoría de ellos forma una jerarquía de dependencia. Ahora bien, si cambio un solo .cs para un proyecto y lo construyo, todos los proyectos dependientes se compilarán también, independientemente de si han sido modificados o no. ¿Hay alguna manera de que Visual Studio solo cree los proyectos modificados? Estoy perdiendo minutos cada vez que hago un pequeño cambio reconstruyendo todo. ¡Añade mucho tiempo!Disminuir el tiempo de compilación de Visual Studio

+0

Es lógico que tenga que reconstruir los proyectos dependientes, porque tiene que comprobar si no se rompió nada. No sé si tienes una SSD, pero para mí fue útil tener una SSD (tiempos de construcción significativamente más cortos). – Styxxy

+0

Estoy bastante seguro de que los problemas que encontraría en la depuración harían que hacer eso fuera poco práctico. – Stuporman

+1

Tener más de 100 proyectos en una solución y los cambios que se filtran en tiempos de compilación largos es un problema de diseño/organización. ¿En qué punto dejas de cambiar la base del castillo de naipes? ¿Seguramente tienes algo que debería costar menos 1000 puntos? No hay una cura fácil para él, de todos modos nada que se ajuste al sitio de Q + A de un programador. No puedo culpar a la herramienta tampoco, solo hace lo que le pides que haga. Traduce tu disgusto con ella en mensajes a los miembros de tu equipo y arquitectos. No podemos ayudar con eso, no estamos tan molestos como tú. –

Respuesta

4

No, no hay una buena manera de hacerlo. A veces ocurre algo de incremental (Visual Studio 2010 o posterior), pero no hay garantías.

Compile los proyectos que están maduros en ensamblajes y haga referencia a ellos desde sus proyectos inestables (actualmente en desarrollo). Si está haciendo las pruebas unitarias correctas, esto no debería ser un gran problema. Divide y conquistaras; termine primero las dependencias y establézcalas estables, luego comprométalas a ensamblajes.

2

Reduce el número de proyectos.

Cada proyecto produce un DLL - una unidad de despliegue. This is normally not needed.

Si necesita organizar su código lógicamente, puede usar carpetas dentro de un proyecto.

Además, en lugar de referencias de proyectos, haga referencia a las DLL creadas.


Por qué esta sugerencia funciona:

  • Menos DLL se producen.
  • Hay menos referencias a estos archivos DLL, por lo que es necesario copiar menos archivos DLL.
  • Los proyectos a los que hacen referencia muchos otros proyectos se vuelven a compilar para cada proyecto de referencia. Si se utiliza una DLL en lugar de una referencia de proyecto, no se realizará una recompilación.
+0

Esto solo hará que las compilaciones sean más lentas, ya que será necesario reconstruir el mismo código o más. – ssube

+0

@peachykeen - Pruébalo. Usted se sorprenderá. Menos proyectos == menos DLL. Menos DLL == menos copiando alrededor y menos recompilaciones. – Oded

+0

Tengo, tanto a menos proyectos grandes y más proyectos pequeños. No lo estaba, no ayuda cuando el problema es la cantidad de código que necesita reconstruirse. Las copias de archivos no son lo suficientemente caras como para causar este tipo de problema, son las compilaciones en cascada, que los proyectos más grandes no (siempre) escapan. – ssube

Cuestiones relacionadas