Stan emailed me with few questions about setting up SharePoint Development Environment. I am posting edited version of that conversation here. The post is general and it applies to any SharePoint environment e.g. testing, educational… you might have in your company.
In your article “Team-Based Development in Microsoft Office SharePoint Server 2007 – Part 2 – Building a development lab” you say that developer has 64-bit Server on the machine and VPC and develops in VPC. Why do you need VPC? The max RAM I can get out of my VPC is 2.3GB, while you can have 3.3 on the server. Can you explain?
32bit Windows XP operating system can only address up to 4GB of RAM. This is the limitation you are hitting here. You should switch to 64bit operating system. Check this article for full list of maximal RAM addressed by various Microsoft operating systems.
Thank you Toni. The other question was about whether to use virtualization or not. Once PC has server OS, why not just develop on it?
If possible you should run your host operating system on 64bit platform and on Windows 2008 if possible. It can address a lot of RAM and it is much faster than other virtualization technology. You do not expensive hardware, any entry-level server or more powerful desktop will do.
The problem with SharePoint is that it is not a simple .NET application. For example you cannot revert certain actions easily (like installing Service Packs, new versions and stuff). In case you are doing everything on top of your server (without virtual machines) it would be much harder to revert to previous state. It can be done, but not easily. And sometime you might figure out that after weeks of testing you cannot use SharePoint Service Pack 2 because some 3rd party application does not work correctly. You will not be able to go back. Sometimes you even need to work on old system while you are testing a new upgrade, if you have only one machine than this might be a problem…
In case you need to support more than one client, you should stick with virtual machines. Each client has a different SharePoint installation; here are some of the options:
1) Operating systems: Windows 2003/2003 R2/2008/2008 R2
2) Platform: 32bit / 64bit
3) Service Pack: None / SP1 / SP2
4) Edition: WSS/SharePoint Standard/SharePoint Enterprise
5) SQL: 2000/2005/2008 (plus Service Packs)
6) Farm configuration: Basic, Single Server, Farm…
and the list goes on and on.
Some clients might also have some additional software on top of SharePoint…
So my advice is: always use Virtual Machines. Recreate exactly the same environment as your client does and stick to it as much as possible.
Thanks a lot for the very detailed answer. We are in the process of building SharePoint lab and were debating the issue of VM / no VM when I came across your article on the web. It is exactly what we need! We’ll go with Win 2008 Standard Edition w Hyper V (x64) as a development environment. The only kicker I heard related to 64bit / 32bit, is that Workflow development environment relies on 32-bit dlls, but that’s fine – we can have 32-bit guest for that purpose…
You can have 32bit VM guests on 64bit host, but you cannot do the other way around… so I would go for 64bit.
Bear in mind that SharePoint 2010 will work only on 64bit Windows 2008 and it will also require SQL Server 2005 / 2008 64bit. If possible plan ahead now.