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.
While some folks love this option, here’s how I pitch it when I explain this new option when teaching one of our SharePoint 2010 development courses at Critical Path Training:
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.
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!