One of the things I've picked up from the big book of developer tools is CruiseControl.NET aka CC.NET. CC.NET is a continuous integration system that automates the entire build, test and deployment cycle.
Setting it up was a breeze. I've spent approximately 6 hours to set it up for all my home projects. At first I wanted to use NAnt, as I've heard a lot of great things about it. After playing with it for a while I decided to go with MSBuild instead. Why?
- The <nunit2> was a real pain as I'm using NUnit 2.4.1.
- The MSBuild Community Tasks are really sweet. The NAntContrib tasks are sweet too, but NUnit support is a big thing for me. The <nunit> task of the MSBuild Community Tasks is really, really easy to use.
- MSBee is freaking cool. I've used it at work a while ago where we had one code-base that needed to get compiled for .NET 1.1 and .NET 2.0. This MSBuild extension let's you do just that and a lot more.
The only bad thing about NAnt and MSBuild is the fact that they are declarative programming languages. I don't like programming in XML!
The unit test, code coverage and FxCop results are nicely incorporated by CC.NET using publishers.
This stuff is supported out-of-the-box, so you don't have to do anything extra.
Now that I have my continuous integration server up and running, maybe it's time to automate my project management as well. There's this other product from ThoughtWorks, called Mingle, that looks very promising. I have to have a software application that manages my agile home projects, aren't I ;-)