News

Build Tools for .NET Applications

When you're writing your first few .NET applications, you'll probably find the Build and Rebuild menu items in Visual Studio .NET to be sufficient. But most developers quickly outgrow this option when faced with the necessity to come up with a reproducible build process for complex software. The ideal build system can take all the bits it needs directly from your source code control system, compile individual libraries in a specific order, create a test database from SQL scripts, run smoke tests, rebuild documentation, zip up the results and place them on an FTP server, and send e-mail to your entire team. And that's just a simple example of the sort of process you might put together.

Fortunately, in build utilities (as in many other areas), the .NET market has been responsive to the needs of developers. Today I thought I'd do a quick roundup of the build utilities that I know about for .NET, for those of you who might be ready to evaluate alternatives. If I've missed any, I'd like to know about it. These are, by the way, in alphabetical order so as not to play favorites.

CruiseControl.NET is a continuous integration utility for .NET. Continuous integration works by monitoring your source code control system and automatically starting a build and running unit tests whenever a new file is checked in. CruiseControl.NET is open source, and integrates with VSS, CVS, Perforce, StarTeam, PVCS, NAnt, and NUnit, among other software. ccnet.thoughtworks.com

Daily Build lets you set up a treeview of tasks nested into folders. Each task can run whatever you like - provided that it can be run from the command line, which most anything can. It's meant to be driven by Windows Scheduler. $85 from www.positive-g.com.

Draco.NET is another free continuous integration utility for .NET projects. It supports NAnt and Visual Studio for builds, and CVS and VSS for source code control. It includes source code if you'd like to tweak it yourself. draconet.sourceforge.net

FinalBuilder is a complete IDE for setting up complex build processes. It lets you stitch together dozens of tasks from running a VS .NET build to executing a SQL Server DTS package to interacting with various source code control systems. You can also write additional command-line tasks, though you may not need to. You can debug and log the build process as well. Pricing starts at EUR 299 from www.atozedsoftware.com.

Hippo.NET is an open source build tool specifically for .NET projects. It uses a client/server model so that your entire team can share a single build machine. The developers are planning to add continuous integration and scheduled build features. Find out more or download the current code base from hipponet.sourceforge.net.

NAnt is an open-source build utility based on the Ant project that does the same for Java solutions. It uses XML files to hold information on tasks that should be performed, and supports Mono as well as Microsoft's .NET Framework. nant.sourceforge.net

.NET Solution Build & Deployment Process & Tools is a set of documentation and utilities from within Microsoft to help you create a structured build process. The documentation is probably worth reading even if you decide you don't like their particular tools. There are also some preview bits that work with the "Whidbey" version of .NET. Grab it all from www.gotdotnet.com.

OpenMake is a high-end build management tool that handles scenarios such as multiple developers building the same project with full reproducibility and support for both Java and .NET projects (as well as much else). Their latest release includes integration with the Visual Studio .NET and Eclipse IDEs. www.openmake.com

Visual Build Pro is a full IDE for managing complicated build processes. It supports dozens of tools and has a full macro language for custom requirements. It will keep log files for a history and integrates directly with various versions of Visual Studio. Pricing starts at $295 from www.kinook.com.

Finally, though you can't actually use it yet, you should know about MSBuild - a NAnt-like build utility that Microsoft is integrating into Visual Studio .NET "Whidbey". This is likely to provide stiff competition for some of the existing free and commercial programs, just by virtue of being in the box. It will be interesting to see how it stacks up on features and usability against some of the more mature alternatives. You can get a preview that was delivered at the PDC by downloading www.gotdotnet.com.

About the Author

Mike Gunderloy has been developing software for a quarter-century now, and writing about it for nearly as long. He walked away from a .NET development career in 2006 and has been a happy Rails user ever since. Mike blogs at A Fresh Cup.