i need to setup a development environment for writing Share Point Web Parts. What do I exactly need?
My development machine is a Windows XP Prof. with Visual Studio
You really need to go virtual. And yes, Visual Studio goes on the server. This is not as bad as it may sound to some. You can install the virtual image and configure everything, including Visual Studio to your liking, and take a snapshot of the server. That way you don't have to re-configure all your custom Visual Studio settings and tools.
You can create as many different virtual images as you need (one for each customer if you are working for several customers) and you can take snapshots of the virtual machines and later discard all, if you need to clean up your workstation.
It is a good practice to delete your development environment often (I heard of teams that does it every week), and go back to a snapshot (you can automate this process in PowerShell to happen every weekend) so that your development environment will be as similar to your developement test, integration test, pre production and production environment as possible!
I have seen several questions asked here, where people can't understand some deployment "that worked fine on my development rig" doesn't work when pushed to production. Differences between environments are one of the most obvious causes of this!
What virtual environment to choose?
I have used Virtual PC/Server and can testify that they are slow. So I will strongly reccomend against those.
If you want a fast development platform you should install Windows Server 2008 on your PC, Convert your Windows 2008 server to a workstation and install HyperV. It is the new free virtualization tool from Microsoft. The reason you need Windows Server 2008 (or Windows 7 beta) is that the OS supports virtualization natively. That is also why it is so fast compared to the alternatives. It isn't even hard to set up, do a google search and you will find plenty of guides on it.
Another good option is VMware workstation. It is not as fast as HyperV, but I have used that for years, and it works like a charm. Not all versions are supported by Microsoft though, so that might give you problems if you call Microsoft support at some point.
I do not recommend using Jonas "SharePoint on Windows Vista" helper for the above reasons: virtualization gives you the possibility to keep your development environment clean!
I highly recommend using a VM. SharePoint is big. It requires multiple servers and lots of services. Basically its guaranteed to slow down any workstation you install it on. Other benefits of using a VM to develop:
This is a pretty comprehensive guide to building a full featured SharePoint VM: http://www.pptspaces.com/sharepointreporterblog/Lists/Posts/Post.aspx?List=7537e639%2Db4e5%2D48b6%2D97c0%2Da75e44ee9be3&ID=28&Source=http%3A%2F%2Fwww%2Epptspaces%2Ecom%2Fsharepointreporterblog%2FLists%2FPosts%2FAllPosts%2Easpx
Although, if you are going to be doing a lot of SharePoint development I would build a parent VM with the OS, SharePoint, and database. Then create a child VM (differential disk) with dev tools (VS 2008, Office 2007, SharePoint Designer). That way, you can always roll back to a clean SharePoint environment if you need to.
Furthermore, I think the best way to do serious solution development is to spend the time and learn how to build your own solution files, and rolling your own features. NANT can be used to great effect for this. The existing crop of automated tools have limitations that you will inevitably run up against if you are doing anything a bit complicated.
Learning all of the moving parts of solution development is a bit daunting, but once you do it gives you a MUCH better picture of what SharePoint is doing under the covers.
I'm Jonas from Bamboo that created the setup helper. Here is why I did it and how I use it.
I 100% agree that virtualization is the way to go when you are testing your solutions. You CAN NOT test a solution on Windows Vista since we don't KNOW how running on Windows Vista will affect the solution. I will go one step further you MUST test your solution in a REAL farm environment.
1) SQL Server on a dedicated box. (Double hop) 2) Multiple front end web servers. (state, deployment...) 3) Different language packs and different language for the OS Time zones you name it. 4) ??? fill in the gap ???
BUT sitting and developing running unit tests debugging in a virtual environment was killing me... It was too slow. You need fast feedback. So either you develop, debug and test with WSS/MOSS on Windows Vista or you install Windows 2003 or Windows Server 2008 and your development environment don't develop in a VM unless you have enough hardware (and I run a quad core 8 GB RAM machine).
Happy coding!
I believe the easiest and the fastest way to get started developing for SharePoint is to use the Microsoft Virtual PC and download MOSS 2007 VHD from Microsoft. It has Windows Server 2003, MOSS 2007, MS Office 2007 (with SharePoint Designer) and Visual Studio 2005 already installed and pre-configured, so it's ready to for you to use. You could also install your own copy of VS 2008, helps with workflow development.
You could also try installing SharePoint on a virtual machine running Windows Server 2003. With Windows Vista, VMware Workstation, 4 GB of memory on the host and a fast disk you will experience decent performance. Additionally, I can also recommend setting up a second virtual machine running Windows Server 2003 and Active Directory if you are installing MOSS 2007. For a WSS 3.0 install it is less important to connect your SharePoint server to AD.
This is a flexible and cost-effective setup I used to have. Now, I am fortunate enough to have an even better setup. My own 1U Dell PowerEdge server in a hosted environment. Such a server is amazingly cheap nowadays and hosting it only costs my company $110 per month. Now, I can just remote desktop to it and enjoy all this power without having to listen to a noisy server under the desk or accept lower performance with the previous virtual machine setup on my laptop.
I can highly recommend any serious SharePoint developer to go for the latter option. It is like a pleasant dream working with SharePoint this way ;-) Convince your boss that this is what you need to work effectively.
You generally have two options:
Personally I use the latter now, along with STSDev, for all my SharePoint work, I find it much nicer than option 1.