SharePoint development toolkit

If you've been following my Facebook updates, you probably noticed that I started working on a brand new SharePoint Web Content Management (WCM) solution. Just to prevent myself from from any dependencies whatsoever I have decided to use a brand new development environment. I've been developing for SharePoint for more than a year and a half now and I got really surprised seeing how many different tools I'm using while developing SharePoint solutions to simplify the process.

The Environment

Nothing really special here. I work on a Windows Server 2003 VPC with Visual Studio 2008 and Team Foundation Server. At the beginning we've been working with Visual Source Safe but as soon as we started working on SharePoint projects, we noticed that we needed an environment which would not only provide us with a source control system but would provide us some tracking and planning possibilities as well.

SharePoint Tools

Microsoft Office SharePoint Designer 2007 (SPD)
SharePoint Designer is the editor for SharePoint provided by Microsoft. While many see it as a web editor only, you can do some really cool things using SharePoint designer. So far I have used SharePoint Designer in WCM scenarios only. Unfortunately I'm not as happy about the overall experience as I would like to be. It works really slowly on my dev machine (in spite of the 2GB RAM it's using), it lacks some useful features like code collapsing and formatting (Visual Studio CTRL+K,D) and the worst of all, it "corrects" the HTML no matter whether I want it or not. As I mentioned I've been using SPD in WCM scenarios mostly for creating Page Layouts: it's just really easy to drag & drop fields onto a page and then copy & paste the complete Page Layout into a solution. Now I've got an alternative to that (Imtech Fields Explorer v1.5.0.0) I think I will limit the usage of SPD even further. SharePoint Designer is a very useful tool and in some situations you can't manage without it, but there are many alternatives to do the things I use it for.

Imtech Fields Explorer v1.5.0.0
Imtech Fields Explorer is probably one of the most useful SharePoint tools I have made. It all started as a tool which would allow me to explore the various properties of Site Columns and Content Types. Later on I decided to join forces with Andrew Connell and provide the possibility to export the Site Columns and Content Types to XML so it can be incorporated in Features. The following improvement was the ability of creating C# wrapper classes so that you can work with Site Columns and Content Types in a more intuitive manner. The latest version (v1.5.0.0 ~~still to be published~~) allows you to generate Page Layouts for selected Content Types. To be honest I love the way how Fields Explorer improved the process of working with Site Columns and Content Types. On one hand it leverages the standard experience of creating Site Columns and Content Types and on the other hand it saves you so much time by exporting the definitions and generating wrapper classes and Page Layouts. To keep it short: I can't imagine working on a WCM solution and not having Imtech Fields Explorer around.

Imtech Test Content Generator
Imtech Test Content Generator is a tool I created to help me with creating dummy Publishing Pages. I'm not using it as heavily as Fields Explorer for example, but it turns very useful for testing paging web parts, when you need many pages with some data.

U2U CAML Query Builder
There is no better tool for working with CAML than the U2U CAML Query Builder. I've been using it since my very first days of SharePoint development. It's way easier to create and test a CAML query using the U2U CAML Query Builder than any other way.

Imtech SharePoint OneClickDeployment Studio
Imtech SharePoint OneClickDeployment Studio is one of the coolest SharePoint tools I have created. It does to provisioning configuration what the solutions do to provisioning assets. It creates and configures hierarchy in a SharePoint solution using XML files. You could compare it to the Web Provisioning Engine but then for all SharePoint objects like Lists, Publishing Pages, Web Parts, etc.

Imtech SharePoint OneClickDeployment Studio provides us some other functionality as well:

  • custom stsadm commands (for example managing checked out Publishing Pages and managing customized assets)
  • generating ddf
  • generating feature.xml

You can read more about Imtech SharePoint OneClickDeployment Studio in my article on structured and repeatable deployment the Imtech way.

SharePoint Developer Bookmarklets
SharePoint Developer Bookmarklets are one of my latest creations. While working with SharePoint I, as well as many customers I have talked to, noticed that it takes way too many clicks to get to the most frequently options in SharePoint 2007. While you could create a Feature which would provide you the links to all these locations, I have decided to create a set of bookmarklets ("intelligent" favorite bookmarks). I keep the bookmarklets in the favorites toolbar, so that I can navigate to any location with no more than a single click. After using it for a while, I have noticed, that Internet Explorer responds quicker when using the bookmarklets than when using the SharePoint Web UI.

Imtech Extended Content Query Web Part
It's not really a tool, but just recently I got convinced of the coolness of the Content Query Web Part (CQWP). Working with the out of the box CQWP is rather inconvenient: the most important settings like CommonViewFields are missing from the interface. To make it all work a little more smooth I have decided to extend it: I added some more properties to the web part's toolbar, added support for paging and extended it with some extra information. After using it in my latest SharePoint solution all I can tell you is: Content Query Web Part is sub zero (cool).

SharePoint Manager 2007
SharePoint Manager is one of these tools good to have around. I remember using it quite intensively in the early days of my SharePoint adventure and rarely opening it further down the road. At the moment I use it mostly when things go wrong or when I need to get the value of a particular property. The hierarchical view of SharePoint helped me understand the SharePoint object model. If you are a beginner SharePoint developer, it might help you as well.

Web development/-design tools

The Browsers
We all know that there are plenty of web browsers available. Depending or either the configuration or personal preferences the visitors are using different browsers. Unfortunately, in spite of the standards defined by the W3C, they are many differences in the way the browsers render the HTML and CSS. While working on any web-based solution, you should consider all these difference and make sure that the solution works properly in the most common browsers. The browsers I use are Mozilla Firefox (the latest version), Internet Explorer (IE 6/7), Safari for Windows (the latest version) and Opera. I always start with getting the markup and CSS right in Firefox and then proceed to IE. When it's all ok, I incorporate it in SharePoint and once again I start off with Firefox and make my way to get things right in Internet Explorer.

Firebug for Firefox
I've been doing webdesign for couple of years now. One of the first things I take care for, when I know that I will work with CSS, is to setup the latest Mozilla Firefox with Firebug. Firebug simplifies the process of working with CSS by providing you information on various CSS applied to a particular element. Using Firebug you can easily find out why some elements don't look as you would them expect to. Firebug provides some other useful features as well, yet inspecting the document and CSS is the one I use the most.

Web Developer Toolbar for Firefox
Web Developer Toolbar for Firefox comes extremely helpful when creating accessible web sites. By using it, it is extremely easy to watch your site without JavaScript, images or CSS. Furthermore it allows you to validate the HTML as rendered by SharePoint so you can easily track some of issues caused by SharePoint.

IE developer Toolbar
The IE developer toolbar provides some of the functionality you can find in both Firebug and Web Developer Toolbar for Firefox. Although not as powerful as the Firefox tools, it is very useful in tracking UI discrepancies in Internet Explorer and other browsers. Definitely a must have for every web developer.

Once in a while you will find yourself in a situation when an HttpHandler or HttpModule you have developed doesn't work. Debugging the Http Headers of both request and response can simplify the debugging process. Fiddler allows you to monitor the Http headers of requests and responses to your development IIS server. As an alternative you could use the Http Live Headers Firefox Add-on. It's less powerful than Fiddler yet sufficient in most scenarios.

Imtech JavaScript Minificator
Removing white-spaces in JavaScript files (also called minifying) is a well-known performance optimization. The process of minifying reduces the size of the JavaScript files which will be quicker downloaded by the browser. I use the Imtech JavaScript Minificator at the end of the project just before final deployment test.

Other dev tools

.NET Reflector
Who doesn't know the .NET Reflector? While it's not a SharePoint-specific tool, it is very very very useful if you really want to understand what's going on under the hood in the SharePoint Object Model.

The Regulator
When I started using Regular Expressions (Regex) I noticed how useful and powerful they are. At the same time I have noticed how inconvenient it is to test and debug them. The Regulator by Roy Osherove is a great tool which supports the process of writing and testing Regex.

Imtech C# String Converter
Imtech C# String Converter simplifies the process of pasting long strings into C# code. Although not used very frequently this tool comes really useful when you expect it least. A really nice to have.


So these are my tools. On one hand it is quite surprising to see how many different tools SharePoint developers need to do their work efficiently. On the other hand I find it great to see how many of these tools have been provided by the community. Looking at various SharePoint projects on CodePlex you will find even more tools which can simplify the process of developing and delivering SharePoint solutions. The most important is to find the right tools for yourself and fill the remaining gaps.

So what tools do you use on regular while developing for SharePoint?

Technorati Tags: SharePoint, SharePoint 2007, MOSS 2007, WSS 3.0