Posted On
Sunday, July 29, 2007 9:02 PM
Posted In
Development
I will be the first to admit that I am a bit late catching on to the whole Subversion and CruiseControl.Net revolution. In the past my project managers rarely found any value in these tools, and I will admit it is still rare to find a project manager who does. After being introduced to CVS a few months back I started investigating various development tools, not only to improve productivity but also to learn.
The first product I started looking at in earnest was Subversion. About 3 months ago I installed the Subversion server on the SBS 2003 server running at home and spent some time reading the online manual and setting it up. I am amazed at how simple source control has become, especially considering that I run two notebooks and have different copies of projects around on either at any point in time. The simple file based method of managing code turned out to be a lot less time consuming then I initially thought. I also now use Subversion to keep copies of important documents and other files up to date, and TortoiseSVN seamless integration makes the process a simple joy. Moving code around has also become easier since there is no source control binding to be concerned about when not near the source control server. Backup is also simplified by just having to back up the SVN repository. Since both SVN and TortoiseSVN are open source, there is no cost implication on implementing these two applications, and provide a easy method to manage not only single developer projects but most importantly teams of developers working on various projects. My first stop when creating a new project has become Subversion, and within 10 minutes I have complete source control configured, working with the least amount of headaches.
Two weeks ago I started implementing CruiseControl.Net. I was previously introduced to CC.Net by Craig who uses it extensively for some time now. After the quick learning curve to understand the CC.Net configuration file, I had my first project running, compiling, and publishing within an hour. Currently my CC.Net server monitors around 20+ projects, each linked to my SVN repository, building everything I need the moment I check in new code. I use the VS Express Studios extensively and find that both Subversion and CC.Net fills the gap created by VS Express as far as source control and code publishing is concerned. By using CC.Net to compile and publish the final code, full use of the ASP.Net Publish utility can be made. I also appreciate not having to load a full copy of the VS Development Environment on my server, making it much simpler to use. I actually came up with a simple and easy solution to update my CC.Net configuration as well. The configuration file is stored inside my Subversion repository and CC.Net monitors a project which will simply check out the new configuration file if it detects a change, and because of it's ability to restart automatically when a new configuration file is submitted, it loads any changes I have made or adds any new projects I may have created. It also means that if I have to recover my server for any reason, the latest configuration file is already sitting in source control, and I will basically be able to pick up from where I left off.
This weekend I decided to look into the world of NAnt, NUnit and FxCop. I've spent a lot of time reading and trying to determine which of these tools I should implement and how. I do believe NUnit and FxCop goes without saying, and integrating these into CC.Net seems simple enough. My dilemma is currently whether I should use NAnt to compile or continue using MSBuild. I am not entirely pleased with having to use solution files in CC.Net to fire the MSBuild process, however I am not finding enough information about NAnt online to make it a primary choice, in fact the few samples I have tried to implement failed miserably. I need step by step samples, and currently the lack of these is frustrating me slightly. I have also never used FxCop or NUnit before, however I believe the learning curve is worth the time investment. Hopefully some time this week I will find the answer to these questions and by the end of August have a new and improved development methodology going.