14/9/2010 10:58
El Bruno
[MSBUILD] Nuevos Targets en MSBuild 4.0: BeforeTargets y AfterTargets (XV)

Buenas,
otra de las novedades en MSBuild 4.0, son dos nuevos targets BeforeTargets y AfterTargets. Hasta la versión 3.5 los MSBuild Targets se definen si el comienzo de un Target depende de la salida de otro Target; utilizando varios atributos para especificar el orden en el que se ejecutan los mismos:
- Initial targets
- Default targets
- First target
- Target dependencies
Ahora en MSBuild 4.0, se han agregado RunBeforeTargets y RunAfterTargets (MSBuild 4.0) que permiten definir los Targets que se ejecutarán antes y después de un determinado Target.
El siguiente ejemplo posee 3 Targets, y en el atributo de proyecto InitialTargets (línea 3) se los define en el siguiente orden:
- Target 3
- Target 2
- Target 1
1: <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
2: ToolsVersion="4.0"
3: InitialTargets="Target3; Target2; Target1">
4: <Target Name="Target1" >
5: <Message Text="Target1" />
6: </Target>
7: <Target Name="Target2">
8: <Message Text="Target2" Importance="high" />
9: </Target>
10: <Target Name="Target3">
11: <Message Text="Target3" Importance="high" />
12: </Target>
13: </Project>
Cuando ejecutamos este proyecto el output del mismo es el siguiente, donde se puede ver como se respeta el orden definido en InitialTargets:
El siguiente proyecto agrega una pequeña modificación en el Target1 (línea 4), que se define que antes de ejecutar el Target1, se ejecute el Target2.
1: <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
2: ToolsVersion="4.0"
3: InitialTargets="Target3; Target2; Target1">
4: <Target Name="Target1" BeforeTargets="Target2" >
5: <Message Text="Target1" />
6: </Target>
7: <Target Name="Target2">
8: <Message Text="Target2" Importance="high" />
9: </Target>
10: <Target Name="Target3">
11: <Message Text="Target3" Importance="high" />
12: </Target>
13: </Project>
La compilación del proyecto es la siguiente, en la que se puede ver el cambio de orden en la ejecución de los Targets:
Saludos @ Here
El Bruno (@elbruno en Twitter)
Archivado en: Visual Studio 2010,Code Sample,Tutorial,MSBuild
Comparte este post: