I noticed this post the other day by SharePoint legend & Certified Master Todd Carter. In it he references the MSDN article that shows you how to setup a Windows 7 box to do SharePoint 2010 development.
By the way, if you've been under a rock, you can now do SharePoint 2010 development on a client operating system such as Windows Vista SP2+ or Windows 7 (both must be 64-bit). Couldn't do this in SharePoint 2007.
In the SharePoint 2007 timeframe, developers were left to figure out how to do SharePoint development:
Microsoft: Ideally you could install a server OS (Windows 2003/2008) on your desktop/laptop and install SharePoint on top of that.
Developer: My company won't let me install a server OS on my workstation.
Microsoft: Then install some sort of virtualization technology, like VirtualPC (or a competing product), and then install the server OS in a VM and install SharePoint on top of that.
Developer: My company won't let me do local virtualization on my workstation.
Microsoft: Then get your IT group to stand up a SharePoint server, either virtual or native, and RDP into it to do development.
Developer: My IT group doesn't have the hardware to stand up a bunch of VMs or dev servers for my team.
Microsoft: Well, then you could quit your job and go somewhere that do one of the three above options and then you could do SharePoint development.
Developer: Can I use this technique I learned from a blog post about installing SharePoint 2007 on Vista?
Random person passing by: Dude, you're crazy to do that.
In my mind, the ability to do SharePoint 2010 development on Windows 7 (or Vista SP2+) is only addressing the above scenario. In addition to just about every single reason Todd outlines in his post, I'd like to add the following:
- Quite a few things simply don't work, or don't work the way you expect them to (User Profile Service, Search, Office Web Apps, other randomness).
- Do you REALLY want all those SharePoint services running all the time? Better yet, do you want to have to remember some script that turns them on/off every time you want to do SharePoint development?
So how do I do it? First, I'm all about virtualization... specifically Hyper-V. As Todd says "I love being able to hit the reset button."
I have a two-part approach. I work from a home office 50% of the time and on the road teaching, presenting, mentoring, development, etc. the other 50%:
When in my home office, I use my virtualization rig I built a few years ago. Still running Hyper-V, still loving this box. In fact I'm so dependent on this thing I'm seriously considering building a 2nd updated one to run side by side for backup purposes.
On the Road
When I'm on the road I lug around two laptops. One is my primary (Lenovo ThinkPad x200s) for doing everything such as very light development, email, writing, etc. because it's so small, portable, light and has a killer battery life. The other (Lenovo ThinkPad w500) is my workhorse I use for doing development, testing (all my load testing & memory profiling tools are here.
My my w500 I have two drives installed: the primary and a 2nd one in the modular bay (who needs DVDs?). On the primary I have Windows 7 installed natively like a traditional OS. On the other drive I have a bunch of VHDs that I boot into (I run a quad-boot system setup using this great PowerShell script). One of the bootable VHDs is a Windows Server 2008 R2 OS with the Hyper-V role enabled. From that machine I run different Hyper-V machines that are on the same drive. This setup runs great!