Since I am making a change to a source controlled file from within the build, my changes were not making it to the build. TeamBuild figures out the last checkin before the build started and uses that to label and get latest. Once you have your version number, you set the BuildNumber property, which is then used by TFS in the build process. So within that target, I can call my custom task that changes the file with the new version number (basically, looks at the old version number and increases it by 1). TeamBuild has a target called BuildNumberOverrideTarget, which does exactly what its name says, override the build number before all the build *stuff* happens. I automated that process with MSBuild/VSS a few months ago, so I had to tweak the custom task to work with VSS. They used to have a manual process where they would physically change the revision number on this custom file before each build.
TFS defaults its build numbers to _YYYYMMDD.# format, which was confusing when we were dropping the files to the build directory. My current client uses a custom file to store build numbers in their application and that file gets used to show the number in a couple of places in the app.