If you are responsible for work with your team’s build system, you will definitely want to buy a copy of Inside the Microsoft Build Engine: Using MSBuild and Team Foundation Build (Second Edition). Both of the authors now work for Microsoft. William Bartholomew is part of the central engineering team and has been building the infrastructure to allow Team Foundation Build to be used as the build system for all of the developer division. You can follow that progress and find more info on team build on his blog. Sayed Ibrahim Hashimi works on the web platform team, and he writes a lot about building web projects on his blog.
This second edition contains extensive coverage of build in Team Foundation Server 2010, which introduced Windows Workflow Foundation (WF) as the new build process orchestration mechanism. WF provides a fantastic platform for your build process needs, and this book helps you get over the learning curve and become productive faster.
I highly recommend it, and the reviews on Amazon are further testimony to how valuable this book is.
Vishal Joshi, lead program manager for web platform tools, has a great blog covering using various project types with Team Foundation Build. Here’s a selection of his posts on using team build, which I highly recommend if you are working with web projects.
Starting with TFS 2010 SP1, there are two improvements to how baseless merges work: base file version and handling deleted files.
First is that if you specify a starting range for a baseless merge, we will now use that changeset as the base in the three-way content merge. That results in a vastly improved experience in merging file content for a baseless merge. For example, tf merge /baseless /v:1234~1234 $/ProjX/foo $/AcmeV2/foo or tf merge /v:1234~T $/ProjX/foo $/AcmeV2/foo.
The second is the handling of deletions. Before the change, items that are deleted in the source branch were not included in the baseless merge. That meant that if you had deleted obsolete files as part of your changes they would not get deleted in the target branch when doing a baseless merge. After the change, if a path is deleted in the source the corresponding path in the target will have a merge,delete conflict. Also, if a file is not deleted in the source but is deleted in the target, the target will get a merge,undelete conflict. The result is that you get a higher fidelity result in the target branch. This was made possible by the changes in TFS 2010 where merge lines up the items by path rather than by item ID.