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.
________________________________
_______________________________________________
oztfs mailing list
oztfs@oztfs.com
http://prdlxvm0001.codify.net/mailman/listinfo/oztfs

Reply via email to