Greetings. Today we share the Foreword that Scott Hanselman graciously contributed to Sayed Hashimi and William Bartholomew’s Supplement to Inside the Microsoft Build Engine: Using MSBuild and Team Foundation Build, 2nd Edition (ISBN 9780735678163). This Supplement adds coverage of new topics to what Scott calls Sayed and Willam’s “missing manual” for MSBuild. As Scott says, “This updated supplemental edition builds (ahem) on the good work of the previous editions and includes new sections on the updates to the MSBuild core, changes in Team Build, and even updates to Web Publishing in Microsoft Visual Studio 2012.”
Ah, the thankless life of the Build Master. If they do their job well, you’ll never know they exist! If they don’t, well, everyone knows it’s the Build Master’s fault, right?
I’ve been a builder in one form or another since my ﬁrst foray into managing the build. Nearly 15 years ago now, I worked on an extremely large system with a team of hundreds. When it came time to build, we used Fred’s machine. Yes, I learned that day that we built and shipped large systems on Fred’s laptop.
This is also how I came to ﬁnd that learning a new build system is similar to boiling a frog. If you throw a frog into hot water, it jumps out. But if you turn the water up slowly, the frog doesn’t realize it’s getting hot, so it stays in the pot and gets boiled. The team didn’t realize how big the system had become and how complex the build was getting.
I realized immediately, somewhat intuitively, that we needed build box. Fast-forward some years, and now every group I work with uses Continuous Integration. Groups I work with have build farms, one with a “Siren of Shame,” a ﬂashing light to effectively shame the build-breaker. We have build artifacts as complex and elegant as actual preconﬁgured virtual machines that pop out the end of our build.
All this was made possible by the power of automation and the surprising ﬂexibility of MSBuild. Sayed and William have written what amounts to the “missing manual” for MSBuild. MSBuild, and its enterprise support counterpart Team Foundation Build, are almost unapologetically powerful. However, they need to be.
Today’s software systems are multilayered, multitiered, and iterate at a speed previously unheard of. All our software development practices and team building comes together at one pinch point: the build.
This essential reference to MSBuild gives us the knowledge not only into how to create an adaptable and vigorous build system, but also valuable insights into the “why” of the product. William is a senior development lead on engineering systems within the Developer division at Microsoft, while Sayed is a program manager overseeing build and pushing for the Microsoft Azure Cloud and Web Tools. I could think of no better people to help me understand a large build system than the folks building large systems themselves. Sure, we’ve all started with “Build.bat” and called it our build system. Perhaps we’ve put together a little schedule and called it an automated build. But these simple constructs don’t scale across a large team or a large product. This book is what the documentation should have been—a guide that takes us through the humble beginnings of MSBuild as a supporting and unseen player in the .NET ecosystems to complete and sophisticated team build solutions.
More importantly, Sayed and Bill dig into the corners and edge cases that we all ﬁnd ourselves bumping up against. They elaborate on the deceptively deep extensibility model that underlies MSBuild and give us the tools to bring both stock and custom components together into a complete team workﬂow.
MSBuild continues to evolve from version 2, to 3.5, and now to version 4 and beyond. This updated supplemental edition builds (ahem) on the good work of the previous editions and includes new sections on the updates to the MSBuild core, changes in Team Build, and even updates to Web Publishing in Microsoft Visual Studio 2012.
I’m glad that this book exists and that people who care about the build like Sayed and William exist to light the way. Now, if I can just ﬁnd out what I did just now that broke my build. . .
Teacher, coder, blogger, podcaster