Hi Scott, You can do an import of a msbuild file that is above the current team build definition. So for example, source control might look like this:
$\TeamBuildTypes\BuildType1 $\TeamBuildTypes\BuildType2 $\TeamBuildTypes\Shared In the shared one you can put a single file with all the logic you have just described. Then you can import it from your TFSBuild.proj file. However you are going to have to add some extra logic to get that shared folder contents before everything else. Which means overriding BeforeEndToEndIteration in your actual TFSBuild.proj file to get the shared folder out of source control (using a workspace might be too late because it won't pull that folder until CoreGet target executes). Also, you can use the .rsp file to specify properties for team build. Regards, Steven Nagy Readify | Senior Developer M: +61 404 044 513 | C: [EMAIL PROTECTED]<sip:[EMAIL PROTECTED]> | B: stevennagy.spaces.live.com<http://stevennagy.spaces.live.com/> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Scott Colestock Sent: Thursday, 26 June 2008 6:21 AM To: [email protected] Subject: [OzTFS] Sharing tfsbuild.proj across build types - Is there a well-known practice for having multiple build types (in Team Build 2008) use a common project file, but still be parameterized in various ways? I've been a little frustrated that you can't specify msbuild command line flags in a build definition (like /property, for instance.) To compensate, here is what I've done... I've defined an item group as follows at the top of my tfsbuild.proj, where the identity of each item correspond to the name of a build definition. Each item has some set of metadata that you want to use in parameterizing the build. <ItemGroup> <BuildType Include="Dev_Core"> <SomeProp>Foo</SomeProp> <BranchToBuild>DevRefactor</BranchToBuild> <BaseBuildName>1.6</BaseBuildName> </BuildType> <BuildType Include="QA_Coret"> <SomeProp>Foo</SomeProp> <BranchToBuild>DevRefactor</BranchToBuild> <BaseBuildName>1.6</BaseBuildName> </BuildType> </ItemGroup> Then, I override BeforeEndToEndIteration (so BuildDefinitionName is defined) and I do the following: <Target Name="BeforeEndToEndIteration"> <CreateProperty Value="%(BuildType.SomeProp)" Condition="'%(BuildType.Identity)'==$(BuildDefinitionName)"> <Output TaskParameter="Value" PropertyName="SomeProp" /> </CreateProperty> <CreateProperty Value="%(BuildType.BranchToBuild)" Condition="'%(BuildType.Identity)'==$(BuildDefinitionName)"> <Output TaskParameter="Value" PropertyName="BranchToBuild" /> </CreateProperty> <CreateProperty Value="%(BuildType.BaseBuildName)" Condition="'%(BuildType.Identity)'==$(BuildDefinitionName)"> <Output TaskParameter="Value" PropertyName="BaseBuildName" /> </CreateProperty> .... </Target> Does this seem reasonable? Do other folks have a better solution ? -- scott colestock trace ventures, LLC 612.559.0580 OzTFS.com - to unsubscribe from this list, send a message back to the list with 'unsubscribe' as the subject. View the web archives at http://www.mail-archive.com/[email protected]/ Powered by mailenable.com, supported by www.readify.net OzTFS.com - to unsubscribe from this list, send a message back to the list with 'unsubscribe' as the subject. View the web archives at http://www.mail-archive.com/[email protected]/ Powered by mailenable.com, supported by www.readify.net
