Using OSS tools for .NET Builds

Patrick Cauldwell Software Architect Serveron Corp. [email protected] Open Source build tools

● NUnit ● NAnt ● WinCVS ● Draco.NET Extreme Programming (XP)

● Some XP Practices – Test first development – Refactoring – Continuous integration NUnit

● Based on JUnit (and Kent Beck's Smalltalk original) ● Build comprehensive unit tests that will be run together ● Automatable ● Perfect for “test-first” development ● Version 2.0 is designed for .NET, not just a Java port NUnit (cont.)

● Test-first development – Write your tests first, then code until they pass – Easy in #, although you do have to write functions to compile ● Facilitates refactoring – After each refactoring step, your tests should still pass ● GUI or console test runners NAnt

● .NET port of Apache Ant ● XML based version of ● Easily extensible ● Calculates complex dependencies ● Runs NUnit test cases ● Current versions use optional XML output format for build logs NAnt (cont.)

● Works with multiple framework versions ● Can generate extensive build reports using XML output ● Development is ongoing WinCVS

● Windows front end for CVS server ● Fully compatible with CVSNT ● Supports SSPI authentication (in version 1.3) ● Supports macros in Tcl or Python Draco.NET

● Automated builds ● “Continuous integration” – XP tie-in ● Ties into SCC – CVS – VSS – Subversion – PVCS ● Runs build tools – NAnt – VisualStudio Continuous Integration

● Draco checks for changes to your ● If changes are detected, a build automatically starts ● Highly configurable Caution!

● If you compile resource files as part of your build – You must run Draco.NET as the user “Local System” – You must grant the ability to interact with the desktop – This can have consequences... ● You can't use SSPI authentication to CVS ● You will not be able to copy files to network shares ● Etc. Conclusion

● Using Open Source tools you can build a robust and automated build processes, including – Unit testing (NUnit) – Complex build processes (NAnt) – Source Code Control (CVS) – Continuous integration (Draco.NET) Questions?

[email protected][email protected] – Mail – Messenger