MSBuild is a great idea. The Apache group deserves some credit here. The creation of Ant has truly changed the way project builds are done today. NAnt was an admitted port of Ant to .Net as I mention in my Open Source .Net book. Microsoft has also taken this idea and created MSBuild. From the incredibly useful posting of the PDC 2003 Slides, you can download and look at the MSBuild presentation complete with examples documentation and, of course, code. It looks as if it will ship for free with the SDK and does not require Visual Studio. A GotDotNet project, NET Solution Build & Deployment Process & Tools, has already surface for a nice set of tools for the tool.
Here are some observation in case someone from Microsoft is listening:
1. I like NAnt’s File Format Better, but could get used to MSBuild.
2. One of the reasons for NAnt’s success is its collaboration. Microsoft has to set this up for MSBuild. Although task creation is simple people are going to want basic tasks available and not have to write a common task like MakeDir. Also the quality of the tasks’ code goes up with a common collaborated project.
3. MS Don’t kill the NAnt project. I don’t think this will happen because MSBuild only targets one CLI. There has been no talk of MSBuild for the SSCLI Rotor project, for example. But MS will look even more horrible in the Open Source community by squashing a project. I’m going out on a limb here but maybe on such a small project here MS could actually Open the Source using something like a BSD license! Oh don’t act so debonair MS has benefited from the BSD license in the past and it wouldn’t be too much to ask for a tiny contribution back.
Some more observations:
1. The MSbuild presentation eludes to Unit testing I wonder where MS is going with that? Also the presentation mentions a “rolling build” which sounds on awful lot like continuous integration and VS.Net Whidbey is integrating some Refactoring stuff. I think there is an opportunity for a product here that integrates SCM, MSBuild and its Tools, Unit Testing and a “Rolling Build”. First one to implement this wins! I think SourceGear would be a good candidate.
2. A build converter would be very cool. VSConvert is a good start but it would be really nice to support conversion between nAnt, MSBuild, VS.Net, #Develop, C# Builder and the soon in coming ItelliC#.