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

Reply via email to