Brian Harry put up a post on the improvements that will be available in the upcoming Team Foundation Server 2008 SP1 release. Here's some more in depth info on two of the TFS Build changes:
1. Conditionalize builds on the trigger.
There are actually a few changes here... Essentially we exposed a property on IBuildDetail called Reason that tells you why the build was started. Reason is an enum of type BuildReason, and can have the following values:
In addition to exposing this new property on IBuildDetail, we have also exposed it as an output property of the GetBuildDetails task and as an MSBuild property available in your TfsBuild.proj files. This could be useful in a couple situations:
For example, if you only wanted to generate a custom build number for your nightly build, you could do something like this:
<Target Name="BuildNumberOverrideTarget" Condition=" '$(Reason)' == 'Schedule' ">
<MyBuildNumberGenerator TeamFoundationServerUrl="$(TeamFoundationServerUrl)" BuildUri="$(BuildUri)">
<Output TaskParameter="BuildNumber" PropertyName="BuildNumber" />
2. Reduce build log noise.
In Orcas RTM, we tried to reduce the dependency of TFS Build on the names of particular targets, tasks, events, etc. in MSBuild. The goal was to make it more usable by people who wanted to radically customize their build process, and in general I think we did a pretty good job here. Unfortunately, one side effect of the associated changes was the presence of lots of "noise" build steps in the Build Details dialog. In particular, each project-to-project reference resulted in three build steps of the form:
These build steps should all magically disappear when Orcas SP1 is installed.
To accomplish this, we added a property called TargetsNotLogged to the TFS Build targets file that specifies the target names for which build steps should not be added when our logger receives ProjectStarted events, and made the default value of this property 'GetTargetPath;GetNativeManifest;GetCopyToOutputDirectoryItems'. If you want these build steps back, just set the property to the empty string in your TfsBuild.proj file. If you want to exclude other targets as well, just set the property to your desired semicolon-delimited list of excluded targets in your TfsBuild.proj file.
(NOTE: I modified the above text on 12/30/2008 to make it more clear that the TargetsNotLogged property should be modified by overriding the default in your TfsBuild.proj file(s), not by modifying it in place in the TFS Build targets file.)
Next week I'll post on Detect test result and/or Dynamically created properties.