2009-05-11 12 views
10

In MSBuild è possibile sovrascrivere uno <Target /> da un altro file nel proprio. Ad esempio l'obiettivo AfterBuild incluso nel file di Microsoft.Common.targets semplicemente definendo la propria destinazione con lo stesso nome:Come si chiama un target MSBuild sovrascritto

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

Vedrete una nota come questo:

destinazione prevalente "AfterBuild" a progetto " C: \ Windows \ Microsoft.NET \ Framework \ v3.5 \ Microsoft.Common.targets "con destinazione" AfterBuild "dal progetto" XXXXX ".

C'è un modo per chiamare il target originale di AfterBuild?

Mi piacerebbe fare questo per strumentare determinati target predefiniti complessi e quindi eseguire il comportamento originale. Molti obiettivi come Build espongono una proprietà BuildDependsOn che può essere utilizzata per questo. Molti altri non lo fanno - e mi piacerebbe superarli senza duplicare completamente il loro contenuto.

risposta

12

Quando uno script MSBuild viene elaborato, elabora anche i file importati. Il risultato sarà una rappresentazione canonica in memoria dell'intero script. Quando viene rilevato un target già esistente, la definizione precedente viene scartata, pertanto non è possibile chiamare il target originale.

Sayed Ibrahim Hashimi

My Book: Inside the Microsoft Build Engine : Using MSBuild and Team Foundation Build

Problemi correlati