Over the past month I have been spending a lot of time with NAnt. It is used a lot on my development teams, but I have never been the one responsible for configuring and integrating it into the build process. This left a bit of a gap in my knowledge of the build process, and hence I decided to pick up Expert .NET Delivery Using NAnt and CruiseControl.NET by Marc Holmes as a primer.
If I had to describe this book in one word, it would be thorough. IMHO, this book thoroughly examines NAnt and goes above and beyond on such topics like building NAnt taks, database integration and synchronization, and even talks about leveraging code generation using CodeSmith!
The book is nicely organized into easily digestible chunks that build upon previous learnings. It breaks up the subject as follows:
Importance of software delivery.
Details of NAnt and common tasks
Real-world case study using current learnings
Useful processes and standards such as refactoring, asset management, build file layout, etc.
Creating NAnt tasks
Database Integration
Code Generation
Conclusion
The book really pumped me up about the whole software delivery process such that I have taken the process even further by investigating other tools, like FinalBuilder, as well as have all my personal projects on a build process that not only includes the basics, but also does: Documentation Generation Using Sandcastle, Code Coverage using NCover and NCoverExplorer, Zip file creation and delivery via FTP, and even Email and IM notification to other interested parties. The process astounds me and has opened my eyes.
The examples are great. It shows you how to interface with FxCop, NUnit, Visual SourceSafe, and various Red Gate Tools for database synchronization. It discusses basic assembly version using the <version> task as well as pitfalls for web projects. Aside from an error I found in the version sample code, I did most of the samples and they worked as expected.
The only thing I would have liked to have seen different in the book is more focus on VS 2005. The book assumes VS 2003, .NET 1.1, Visual SourceSafe, etc. I would have liked to have seen more focus on VS 2005, Subversion / Vault, Sandcastle as opposed to NDoc, etc. These are my preferences, however, and for the most part everything in the book applies no matter what your preference. Obviously there may be some timing issues with the publication of the book and the release of these technologies, too.
There is no fluff in the book. You get hardcore NAnt with a little taste of CruiseControl.NET, and I enjoyed it immensely.
by David Hayden