Hi Neil, Not sure if this will be helpful, but I think what you’re also looking for is that, in the example you gave, GetDependsOn is defined as an empty property.
The code <GetDependsOn> </GetDependsOn> Defines an empty property. The code: <GetDependsOn> $(GetDependsOn); </GetDependsOn> Defines an empty property which references itself. This syntax continues to confuse me somewhat, but as Jacob described, in practice it allows you to inject new targets before or after the original list. It might be clearer if the list/property wasn’t empty: <PropertyGroup> <DesktopBuildDependsOn> Compile; Test; GenerateDocumentation; PackageBinaries; </DesktopBuildDependsOn> </PropertyGroup> If you then wanted to add your own custom target that ran after PackageBinaries – say, to copy them somewhere – you could do this: <PropertyGroup> <DesktopBuildDependsOn> $(DesktopBuildDependsOn); CopyPackagedBinaries; </DesktopBuildDependsOn> </PropertyGroup> Where CopyPackagedBinaries is a target you define. Hope this helps. Thanks, Ross From: oztfs-boun...@oztfs.com [mailto:oztfs-boun...@oztfs.com] On Behalf Of Neil Carey Sent: Wednesday, June 16, 2010 12:45 AM To: ozTFS Subject: RE: GetDependsOn Hey, thanks for the reply. I'll look into the TFS extension points and the Get functionality. (Just starting down the MSBuild road). Dumb question, perhaps, but how do I "find" the definition of $(GetDependsOn)? Thanks, Neil. From: oztfs-boun...@oztfs.com [mailto:oztfs-boun...@oztfs.com] On Behalf Of Jakob Ehn Sent: Wednesday, 16 June 2010 5:33 PM To: ozTFS Subject: RE: GetDependsOn Sure, there are lots of these properties in the MSBuild/TFS build target files, and the purpose is to be able to extend the default behavior and insert custom functionality at some point in the build process. For example, in our TFS 2008 release builds, we have defined a build process by extending most of the TFS extension points like this: <GetDependsOn> ReleaseBuildBeforeGet; $(GetDependsOn); ReleaseBuildAfterGet; </GetDependsOn> This will call the ReleaseBuildBeforeGet/ReleaseBuildAfterGet targets before and after the standard Get functionality in the TFS build targets. If you want to call a custom target somewhere inside the Get targets, you need to find the definition of $(GetDependsOn) and override it: <PropertyGroup> <GetDependsOn> BeforeGet; ReleaseBuildBeforeCoreGet; CoreGet; ReleaseBuildAfterCoreGet; AfterGet; </GetDependsOn> </PropertyGroup> There is an important difference between doing this and just implementing the <BeforeGet> and <AfterGet> targets, and that is that you can only have one implementation of a target. This means that if you implement AfterGet in one target file, and then you (or someone else) decides to implement AfterGet in another target file this will override the default implementation. By using the above “pattern” you make sure that your targets will always be called, even is someone implement Before/AfterGet. Hope that helps /Jakob ________________________________ Jakob Ehn Utvecklingschef - http://geekswithblogs.net/jakob Osiris Data Sveavägen 64, 11134 Stockholm Telefon: +46 8 545 252 84 Box 3186, 10363 Stockholm Mobil: +46 70 7995669 Web: www.osiris.no<http://www.osiris.no/> Mail: jakob....@osiris.no<mailto:david.blomqv...@osiris.no> ________________________________ From: oztfs-boun...@oztfs.com [mailto:oztfs-boun...@oztfs.com] On Behalf Of Neil Carey Sent: den 16 June 2010 09:06 To: ozTFS Subject: GetDependsOn Hi All, Would someone be able to point me in the direction of the MS documentation on GetDependsOn? <GetDependsOn> $(GetDependsOn); </GetDependsOn> I've had a look on the interwebs but nothing obvious jumps out. Failing this - most likely :) - can anyone explain what this does? Cheers Neil. ________________________________ Confidentiality and Privilege Notice This document is intended solely for the named addressee. The information contained in the pages is confidential and contains legally privileged information. If you are not the addressee indicated in this message (or responsible for delivery of the message to such person), you may not copy or deliver this message to anyone, and you should destroy this message and kindly notify the sender by reply email. Confidentiality and legal privilege are not waived or lost by reason of mistaken delivery to you. ________________________________ ________________________________ Confidentiality and Privilege Notice This document is intended solely for the named addressee. The information contained in the pages is confidential and contains legally privileged information. If you are not the addressee indicated in this message (or responsible for delivery of the message to such person), you may not copy or deliver this message to anyone, and you should destroy this message and kindly notify the sender by reply email. Confidentiality and legal privilege are not waived or lost by reason of mistaken delivery to you. ________________________________
_______________________________________________ oztfs mailing list oztfs@oztfs.com http://prdlxvm0001.codify.net/mailman/listinfo/oztfs