2009-01-10 75 views
20

Tengo una solución de tamaño moderado en Visual Studio que tarda unos 5 minutos en compilar (tarda tanto tiempo debido a FxCop y otros pasos posteriores a la compilación). Mi problema es que Visual Studio deja de responder mientras se está creando. No puedes continuar trabajando ya que VS casi se cuelga. Traté de usar dos instancias de VS, solo usando una para la compilación, pero sigue bloqueándose de vez en cuando.Mejores prácticas si su compilación demora demasiado en Visual Studio

Mi pregunta es: Cómo no perder el tiempo mirando a Visual Studio construyendo su proyecto grande/moderado. ¿Hay alguna mejor práctica para esto?

Respuesta

7

Dos excelentes consejos MSBuild me acabo de enterar ayer ...

Puede ejecutar tareas en paralelo mediante el modificador/m: n interruptor donde n es el número de procesadores de usar. Todo lo que tiene que hacer es establecer BuildInParallel en su tarea MSBuild.

El otro truco es que si usted tiene varias < exec/> tareas a ejecutar en realidad se les puede ejecutar en paralelo también llamando < comando exec = "sueño 10 | sueño 10 | sueño 20"/> mediante el uso de la tubería carácter entre cada comando. Un ejemplo más práctico:

<CreateItem Include="server1;server2;server3;server2"> 
    <Output ItemName="IISServer" TaskParameter="Include"/> 
</CreateItem> 
<CreateProperty Value="@(IISServer->'iisreset.exe /start %(Identity)', '|')"> 
    <Output TaskParameter="Value" PropertyName="IISServerStartAll" /> 
</CreateProperty> 
<exec command="$(IISServerStartAll)" /> 
+0

Eso es interesante, suena como más velocidad de forma gratuita. Pero sé * absolutamente * nada sobre la construcción. Si estoy iniciando y depurando "compilaciones" en VS, ¿dónde encuentro este archivo o modifico la configuración en la interfaz de usuario? –

+0

Esto sería en las secuencias de comandos de MSBuild que usted mismo escribe.Definitivamente recomendaría tomar FxCop de cada compilación, eso es innecesario. Puede configurar procesos de compilación separados en VS. Sugeriría uno solo por compilar en lo que está trabajando y uno que ejecute todas las comprobaciones y pruebas del código. – DavGarcia

+0

+1 Podría usar la sintaxis [Property in Group target group/ItemGroup] para hacer que el ejemplo sea aún más claro ... También Herramientas | Opciones Proyectos y Soluciones | Compilar y Ejecutar | número máximo de construcciones de proyectos paralelas lo controla externamente –

5
  1. Por supuesto que no es necesario realizar un análisis de código estático cada vez que construir su solución.
  2. Reducir el número de proyectos por fusionar algunos también podría ayudar mucho.

¿Qué otras tareas de creación de publicaciones ha implementado?

+1

+1 Acepto, debe considerar ejecutar un servidor de compilación con CruiseControl.NET que ejecutará su análisis de código estático, pruebas unitarias, cobertura de código (Ncover), estándares de codificación (StyleCop), análisis de estructura de clase (NDepends), etc ... Puedes configurar una compilación para hacerlo justo antes de que te registres también. – DavGarcia

+0

TeamCity es realmente fácil de configurar ... –

+0

No ejecutamos ningún análisis en modo DEPURACIÓN por este mismo motivo. Una vez que el Desarrollador cree que están llegando al final del ciclo de desarrollo, lo ponen en Modo de Liberación, que es cuando ejecutamos nuestro Análisis de Código, etc. – DrGriff

0

Puede considerar una máquina de creación dedicada utilizando MSBuild. A partir de ahí, podrás seguir trabajando mientras compilas. Sin embargo, lo hace más complicado, ya que está presentando problemas de red.

-1

Puede crear clases en otro proyecto anulando las clases que necesitaría para compilar el código. De esta manera, puedes probar y documentar tu nuevo código. Después de esto, simplemente lo incluye en el proyecto real y compila "de verdad". Para cuando compila, ya está trabajando en otro fragmento del proyecto porque tiene un 95% de compilación exitosa. O bien, para cuando compila, también puede escribir las pruebas de su unidad.

+0

El problema no es "qué hacer mientras compila", sino más "cómo para usar Visual Studio mientras se compila, dado que al iniciar dos instancias se bloquea ". –

1

Use Incredibuild si tiene más de una computadora o configure este programa para otros amigos en el trabajo. es fácil de configurar y usar. la aceleración es lineal para la compilación.

también es bueno para dispensada de múltiples núcleos de CPU normalmente vs utiliza un núcleo para un proyecto pero IncrediBuild que sea paralelo para cada archivo .cpp ...

oportunidad y ver .. :)

Cuestiones relacionadas