As a .NET developer I have a set of development tools I frequently use. As a test-driven developer I prefer to have some kind of a continuous integration environment available. This is the first part of the two post series. This first post will list components I use. The second post will describe how to configure TeamCity to use SQL Server as a main configuration repository.
Source control system
I currently use Subversion as my source control system. I like the fact that I can work on my files (see diffs for example) even when I’m not connected to my source control server. This is a huge advantage for notebook users in my opinion.
I currently use VisualSVN Server. It comes with a VisualSVN Server Manager (snap-in to the Microsoft Management Console) where you can very easily configure your source server. You don’t need to tweak authz file any more.
Development environment
I don’t want to spend too much time in this section because it would make this post way too long. Let me just note that my primary IDE is Microsoft Visual Studio with JetBrains ReSharper plugin.
As a unit test framework I use xUnit.net with xUnit.net Contrib integration to ReSharper. Why do I use xUnit.net and not NUnit or MSTest? The answer is best described by Jim Newkirk at Why did we build xUnit. I like the fact that the framework is very simple. It has a limited number of custom attributes and it’s reasonably fast. Assert methods are generic based which makes the code more precise. I also like the fact that each test is run in it’s own test class instance and therefore it improves individual test isolation.
Note: My biggest complaint about MSTest was the fact that it was only available in a special suite of Visual Studio. With Visual Studio 2008, MSTest is now part of Professional version of Visual Studio. I think that it is still not enough. Unit testing is such a basic requirement that it should be part of the platform (.NET Framework) or it’s SDK. I should be forced to buy Visual Studio to get MSTest binaries!
Build scripts
I am a long time NAnt user. I have a library of snippets I use for my build scripts. I have even created a set of CodeSmith templates that help me generate the basic NAnt scripts.
Even though I like NAnt a lot, I am slowly moving away toward MSBuild based scripts. Most of my new development is based on MSBuild scripts. Why? I like the fact that Visual Studio shares the same project configuration as my build system.
Continuous integration & Build system
I prefer spending my time coding rather than tweaking XML files to configure my environment. That’s why I decided to use JetBrains TeamCity. TeamCity is continuous integration and build management system that is available for free for small teams (details are available at JetBrains web).
Configuration repository
As a configuration repository I prefer Microsoft SQL Server database. For very small systems like stand-alone development on a notebook I would stay with HSQLDB which is the default configuration repository in TeamCity.
Installation and Configuration
First I install Microsoft .NET Framework, Microsoft SQL Server 2008 and Microsoft Visual Studio 2008. After that I install JetBrains ReSharper and xUnit.net. The last component to install is JetBrains TeamCity. Read my next blog post about configuring TeamCity with SQL Server.
Coding
teamcity, sqlserver, dotnet