One of the coolest tools I have been using for the lasts months is DocProject:
DocProject generates documentation from an xml comment file using sandcastle. The generated documentation can be a precompiled help file (help 1.x or help 2.x) or a web site.
There are other tools that serve as a friendly GUI for sandcastle but DocProject integrates great with Visual Studio 2005 (and 2008) and lets you create and maintain the documentation without effort.
When DocProject is installed, two new project types will show in the “New Project Dialog”:
• Project Documentation: that lets you generate a precompiled help file.
• DocSite Web Application: that creates a web site with the documentation.
When you select one of those project types, it will ask you for which projects you want to generate the documentation, and basically that is all that you need to get DocProject working (of course you need to generate the xml comment file for the projects you want to document, so be sure to have the checkbox at “Build -> Output -> XML documentation file” enabled in the project properties.
You can configure a lot of options when generating the documentation. To do that you have to click in Tool->Options->DocProject. I won’t detail the options, but it is really straightforward to use. The only thing I miss is that this can’t be done in the project properties for the projects created by DocProject.
There are several styles available for the generated documentation. Here is a pic of a precompiled help file of the one I’m using:
You can take a look at a website that uses DocProject here:
If you compile often (as I do) you will see that generating the documentation takes a long time so probably you’ll want to exclude the generation of the documentation when you compile (Build->Configuration Manager->uncheck the build from the documentation project) and build it when you really need it or if you have use a continuous integration server, let it do the work for you.
So the only excuse now to not have good documentation for your projects is being lazy.