2010-03-16 10 views
7

Necesito un conjunto de tareas que deben ejecutarse exactamente una vez para la solución completa. Esto ejecutará tareas que modificarán cada proyecto para ejecutar un conjunto separado de tareas para cada proyecto. Lo habíamos hecho antes usando un proyecto separado para la solución que tenía las tareas de nivel de solución, pero queremos alejarnos de eso. ¿Alguien ha hecho esto o alguien tiene alguna sugerencia sobre cómo implementar esto?Realice una ejecución de destino una vez en el nivel de Solución en MSBuild

Respuesta

6

Como los archivos de la Solución no están en formato MSBuild, no se pueden extender ni personalizar fácilmente. Si desea tener más control sobre el proceso de compilación, deberá crear un archivo "msbuild" de "controlador" que reemplace su archivo de solución. Dentro de este archivo de controlador construiría todos los proyectos que necesitaba y realizaría algunas tareas adicionales. Usted haría esto usando el MSBuild task. Aquí hay una muestra que muestra cómo construir más de 1 proyecto.

<Project ...> 
    <ItemGroup> 
     <Projects Include="proj01.csproj"/> 
     <Projects Include="proj02.csproj"/> 
     <Projects Include="proj03.csproj"/> 
    </ItemGroup> 

    <Target Name="BuildAll"> 
     <MSBuild Projects="@(Projects)" BuildInParallel="true" /> 
    </Target> 

</Project> 

Por lo tanto, en su caso, simplemente ejecutaría las tareas antes de construir los proyectos. También tenga en cuenta que he especificado el valor true para BuildInParallel, lo que indica que MSBuild puede intentar crear más de un proyecto a la vez.

+0

Esta es una idea interesante. Creo que esto también funcionará si quiero realizar algunas tareas adicionales antes de construir los proyectos. (Y esas tareas adicionales modificarán los proyectos ellos mismos.) – Chandam

+0

La creación de estos archivos de compilación es un escenario muy común. Mucha gente prefiere escribir estos tipos de archivos de compilación usando la solución para compilaciones de producción. En mi caso, solo uso archivos de solución para Visual Studio, nunca para compilaciones reales. –

+0

Sayed en este enfoque dice si mi proyecto 1 depende del proyecto 2, entonces ¿no construiría msbuild mi proyecto 2 dos veces, retrasando así el proceso de compilación? – Nikhil

Cuestiones relacionadas