Over the last few years my development environment has evolved and changed as newer and better tools were released. I've had my current setup running for a few months now and I'm really pleased with how it's working.
My current environment is built around the Eclipse IDE. This wonderful open source project has really changed the way I work.
Keep in mind that I have complete control over my production environment. Meaning that I have console access to the servers and a relatively free hand to configure them as needed. Here's my setup:
I'm doing most of my development locally. I interact with the subVersion repository via the SVN plug in for Eclipse. I've also installed TortoiseSVN so that I can interact with it directly from my file system.
Since my team works on several websites I needed a way to quickly switch my web root to the correct site. For that I created Load_IIS.bat, a simple batch file to easily switch my local web root.
Code is published via a staging server. I've installed TortoiseSVN on the staging server so that I can download the changes from the subVersion repository.
This is a manual process and after much debate our team has decided that we shouldn't automate the publishing process.
We use Beyond Compare, also installed on the staging server, to compare and publish the staged code. This also provides an opportunity for a final code review.
Table structures are synchronized using Steve Bryant's excellent DataMgr components. While DataMgr is much more than just a structure manager it provides an easy way to define our table structures via XML.
Obviously this approach isn't right for everyone but it works well for me.