2009-05-11 21 views
10

En MSBuild puede anular un <Target /> desde otro archivo usted mismo. Por ejemplo, el objetivo AfterBuild incluido en Microsoft.Common.targets archivo, simplemente mediante la definición de su propio destino con el mismo nombre:Cómo llamar a un destino MSBuild anulado

<Target Name="AfterBuild"> 
    <!-- Do something different --> 
</TargetName> 

Usted verá una nota así:

objetivo superior "AfterBuild" en el proyecto " C: \ Windows \ Microsoft.NET \ Framework \ v3.5 \ Microsoft.Common.targets "con objetivo" AfterBuild "del proyecto" XXXXX ".

¿Hay alguna manera de llamar al objetivo original de AfterBuild?

Me gustaría hacer esto para instrumentar ciertos objetivos predeterminados complejos y luego ejecutar el comportamiento original. Muchos objetivos como Build exponen una propiedad BuildDependsOn que se puede usar para esto. Muchos otros no, y me gustaría anularlos sin duplicar completamente su contenido.

Respuesta

12

Cuando se procesa un script de MSBuild, también procesa los archivos importados. El resultado será una representación canónica única en memoria de todo el script. Cuando se encuentra un objetivo que ya existe, la definición anterior se descarta, por lo tanto, no es posible llamar al objetivo original.

Sayed Ibrahim Hashimi

Mi libro: Inside the Microsoft Build Engine : Using MSBuild and Team Foundation Build

Cuestiones relacionadas