On my last project, we used Vault for source control (as I mentioned previously). For our continuous integration, we used a set of scripts I wrote to extract source code from Vault, build the assemblies with the command-line compiler, and move the assemblies to the correct locations for testing. The build was set on a schedule to run every few hours. We used Issue Manager for our bug tracking. After release, we were starting to look at NAnt and Draco.Net for building and countinuous integration.
On my new project, we have different scenarios and requirements than the previous project (of course), but the ideas of the build process are the same. I believe once you start using some of these methods of writing good software (unit testing, pair programming, continuous integration, bug tracking, etc.), you wonder "How you could I have written software any other way?".