At the moment we have a build script here that uses a bunch of free tools. NAnt, CruiseControl.Net, NUnit, NMock, NCover(GDN), NDoc.
NAnt allows you to specify build scripts by defining targets and dependencies.
NUnit is a unit testing framework allowing you to automate execution of your unit tests.
NDoc produces documentation from the comments in your code.
CruiseControl.Net is a continuous build server. It monitors source control and when there is a change kicks off a build and reports any errors.
NMock is a component that uses reflection to dynamically generate a class that implements an interface.
NCover monitors the code coverage that is caused by a run of some code.
So... tying all this together. You use NAnt to automate a script that gets latest from version control, compiles the code, runs the unit tests, run the unit tests thought NCover, generate documentation for the code.
Cruise control does this every time the code base changes.
What you get? You verify that the code in version control compiles and satisfies all the unit tests. It also keeps an eye on the amount of code covered by the unit tests, so you can see if tests are missing.
FXCop. Microsoft made this tool to help ensure the code base complies to a set of coding standards and coding styles.