Avalon is flashy. Indigo is robust and extensible. Generics, iterators and anonymous methods make writing extensible code faster than ever. One of the workhorses that doesn’t get a lot of credit is MSBuild. There are so many things you have to do to get software out the door in your customers’ hands, so many things that I won’t bother enumerating them.
Doing them all automatically, the same way every time is a daunting task. In .NET 1.1, automating everything requires third-party tools, such as NAnt. The biggest disadvantage of any tool: VS integration. Visual Studio stores all the solution information in .sln and .*proj files; a third party tool either has to parse that file, which may be well-formed XML, but it certainly takes a lot more than an XML parser to interpret. Or, the tool requires you to add all that project info yourself.
With the new framework, that all changes: MSBuild is a completely new, XML-based tool that allows you to run arbitrary tasks related to your project. The biggest advantage? Visual Studio uses it. And uses it well.
However, you don’t see a lot about MSBuild in the blogs or articles, with the exception of the MSBuild blog. They have some really great articles, including a whole series on how Visual Studio uses MSBuild. One of their latest posts is about extending MSBuild with your own custom tasks.
Recommended.