2011-05-25 8 views

Respuesta

15

La propiedad PostBuildEvent puede mantener un comando que se pasa como el atributo de comando a una tarea de Exec. Esencialmente se termina con un objetivo que tiene este aspecto,

<Target Name="PostBuildEvent"> 
    <Exec Command="$(PostBuildEvent)" /> 
</Target> 

Puede configurar las condiciones cuando este se llevará a cabo con un entorno en el IDE, por defecto sólo se ejecuta en una compilación satisfactoria.

El objetivo AfterBuild puede contener tareas arbitrarias de MSBuild, incluyendo una o más tareas de Exec o cualquier otra tarea disponible para MSBuild, lo que permite una mayor complejidad.

En términos de cuándo se ejecutan, el objetivo PostBuildEvent se ejecuta justo antes de "CoreBuild" mientras que el objetivo "AfterBuild" se ejecutará después de "CoreBuild". Si la ubicación es crítica, puede hacer su propio objetivo y conectarlo a cualquier lugar en la compilación que necesite para ejecutar, usando las declaraciones $ (DependsOn ..), o especificando BeforeTargets y AfterTargets en su nuevo objetivo.

+0

PostBuildEvent se ejecuta después de CoreBuild – JaredPar

+1

Bueno, técnicamente el PostBuildEvent se ejecuta al final de los destinos dependientes de CoreBuild, que se ejecutan antes de que se ejecute el objetivo CoreBuild, pero luego CoreBuild es solo un objetivo vacío eso solo parece existir como un punto de unión para su lista de objetivos DependsOn. No se ejecuta "después" de CoreBuild, justo al final de todo lo útil que CoreBuild hace que se ejecute. Consulte Microsoft.Common.targets ~ línea 560 (2010 SP1). –

+0

oh sí, me olvido que es una parte de la lista DependsOn así que sí, se ejecuta antes. Lo leo constantemente como CoreBuild se ejecuta ... en lugar de CoreBuild DependsOn ... – JaredPar

16

Tanto PostBuildEvent como AfterBuild son objetivos de MSBuild. La diferencia entre los dos es las condiciones de todo cuanto se invoquen

  • AfterBuild: Se ejecuta la última acción del objetivo build y lo hace independientemente de si es o no una acumulación tiene éxito. Se ejecuta después de PostBuildEvent (si se ejecuta)
  • PostBuildEvent: Esto se ejecuta de forma condicional después de una compilación completa. Cuando se ejecuta es muy configurable, pero en general solo se ejecutará si una compilación se completa satisfactoriamente y produce una nueva salida.
+0

¿Se prefiere una sintaxis a la otra? – Sako73

+1

En depende de su escenario, pero generalmente la gente usa PostBuildEvent – JaredPar

Cuestiones relacionadas