<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://davesexton.com/blog/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Dave Sexton's Blog : CodePlex</title><link>http://davesexton.com/blog/blogs/blog/archive/tags/CodePlex/default.aspx</link><description>Tags: CodePlex</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.2)</generator><item><title>DocProject Roadmap</title><link>http://davesexton.com/blog/blogs/blog/archive/2008/01/17/docproject-roadmap.aspx</link><pubDate>Thu, 17 Jan 2008 13:58:17 GMT</pubDate><guid isPermaLink="false">5b5c6d2b-d071-4bf8-ac28-4f9cd768b39b:86</guid><dc:creator>Dave Sexton</dc:creator><slash:comments>2</slash:comments><comments>http://davesexton.com/blog/blogs/blog/comments/86.aspx</comments><wfw:commentRss>http://davesexton.com/blog/blogs/blog/commentrss.aspx?PostID=86</wfw:commentRss><description>&lt;p&gt;As you may have already heard, &lt;a title="Sandcastle on CodePlex" href="http://www.codeplex.com/Sandcastle"&gt;Sandcastle&lt;/a&gt; [1] was officially released to the web (RTW) through CodePlex on January 15, 2008.&amp;nbsp; The license that was chosen is the &lt;em&gt;Microsoft Public License&lt;/em&gt; (Ms-PL) &lt;a title="Microsoft Public License; Ms-PL" href="http://opensource.org/licenses/ms-pl.html"&gt;[2]&lt;/a&gt;, but keep an eye on it because it may change &lt;a href="http://www.codeplex.com/Sandcastle/Thread/View.aspx?ThreadId=20557"&gt;[3]&lt;/a&gt;.&amp;nbsp; There are still a few unanswered questions that I have [3] about how Microsoft's work on Sandcastle will continue and how it will affect &lt;a title="DocProject on CodePlex" href="http://www.codeplex.com/DocProject"&gt;DocProject&lt;/a&gt;, but things are looking very positive.&lt;/p&gt; &lt;p&gt;In this blog post I'd like to express a few of my goals and ideas for DocProject and maybe even try to establish some preliminary timeline.&amp;nbsp; And of course, if you have any thoughts your feedback will be welcomed :)&lt;/p&gt; &lt;h4&gt;The End of Phase 1&lt;/h4&gt; &lt;p&gt;With the help of community feedback and my propensity for being anti-social in favor of sitting in a dark room, programming, DocProject's long initial development phase is nearing an end.&amp;nbsp; The next release, which you can read about in my blog (DocProject 1.10.0 RC Preview &lt;a title="DocProject 1.10.0 RC Preview" href="http://davesexton.com/blog/blogs/blog/archive/2008/01/15/docproject-1-10-0-rc-preview.aspx"&gt;[4]&lt;/a&gt;), brings together a few long-awaited features that will hopefully start to make DocProject into a useful help authoring tool (HAT) &lt;a title="Help Authoring Tool - Wikipedia" href="http://en.wikipedia.org/w/index.php?title=Help_authoring_tool&amp;amp;oldid=183180723"&gt;[5]&lt;/a&gt;.&amp;nbsp; I'm going to try for Monday, January 21st, to release 1.10.0 RC, and I'm hoping that the worst-case scenario will be the following Friday.&lt;/p&gt; &lt;p&gt;From there I expect to deploy only one more &lt;em&gt;Release Candidate&lt;/em&gt; that contains various outstanding bug fixes and feature requests and then I'll freeze DocProject's feature set for Visual Studio 2005.&amp;nbsp; The following deployment, 1.12.0, should therefore be the first DocProject &lt;em&gt;Production&lt;/em&gt; release.&amp;nbsp; Expect that in March, 2008.&lt;/p&gt; &lt;h5&gt;Visual Studio 2005 vs. Visual Studio 2008&lt;/h5&gt; &lt;p&gt;I expect to have my own licensed copy of VS 2008 Standard edition sometime before the end of February, but until then I've decided that I will not be concentrating on any new deployments for DocProject 2008 Beta, although I'm very excited about using VS 2008 and I'll certainly jump on that bandwagon as soon as I can.&lt;/p&gt; &lt;p&gt;So for now, you can expect development to continue like normal for VS 2005.&amp;nbsp; But once I start concentrating on VS 2008, I'm probably going to freeze the feature set for VS 2005, distribute the first &lt;em&gt;Production&lt;/em&gt; release of DocProject 1.x, and then switch gears for .NET 3.5 and, possibly, VS &lt;em&gt;Package&lt;/em&gt; development.&amp;nbsp; I intended to eventually release DocProject as a true package, hopefully with its own editors and &lt;em&gt;actual&lt;/em&gt; project types &lt;a title="DocProject Work Items: VS 2008 Shell and Extensibility" href="http://www.codeplex.com/DocProject/WorkItem/View.aspx?WorkItemId=14029"&gt;[6]&lt;/a&gt; (i.e., &lt;em&gt;DocProject&lt;/em&gt; and &lt;em&gt;DocSite&lt;/em&gt; Templates &lt;a title="DocProject Components" href="http://www.codeplex.com/DocProject/Wiki/View.aspx?title=DocProject+Components"&gt;[7]&lt;/a&gt; that are recognized by Visual Studio as distinct project types, with their own property pages, etc.).&lt;/p&gt; &lt;p&gt;After DocProject 1.x goes into stabilization (the end of &lt;em&gt;phase 1&lt;/em&gt;) I'll certainly provide support for it and help people whenever I can if they have questions about how to modify the source code or how to add additional features themselves.&amp;nbsp; Although, the only official deployments that you'll see will probably be major releases that fix a large number of bugs.&lt;/p&gt; &lt;p&gt;Well that's my plan anyway because in the last couple of DocProject 2008 releases I've realized that maintaining two versions of the project is almost like double the work; however, since Visual Studio 2008 will allow me to target the .NET 2.0 Framework I may be able to work on both versions of DocProject simultaneously, without much additional effort.&amp;nbsp; If that's true then hopefully I won't feel the need to freeze the DocProject 1.x feature set.&amp;nbsp; Although, technically I can't really &lt;em&gt;freeze&lt;/em&gt; DocProject's feature set anyway since it's open source ;)&lt;/p&gt; &lt;h5&gt;DocProject Documentation&lt;/h5&gt; &lt;p&gt;I plan to distribute compiled help for DocProject 1.x that consists of both API reference and conceptual documentation after the first &lt;em&gt;Production&lt;/em&gt; release.&amp;nbsp; I'd say that a week or two should be enough time to author useful, preliminary documentation.&amp;nbsp; After that I'll probably just add content here and there and deploy whenever I reach certain milestones that I define on the fly.&lt;/p&gt; &lt;p&gt;A .chm will be downloadable from CodePlex and the installer will present you with the option to have DocProject's help content (.HxS) merged with Visual Studio's help.&amp;nbsp; I'm even considering hosting a &lt;em&gt;DocSite&lt;/em&gt; as an online reference and as a great working example of DocProject's and Sandcastle's capabilities.&lt;/p&gt; &lt;h4&gt;Phase 2&lt;/h4&gt; &lt;p&gt;The next phase will pickup with the development of DocProject 2008, targeting Visual Studio 2008 and the .NET 3.5 Framework.&amp;nbsp; The timeline will probably start sometime in March, 2008.&amp;nbsp; From there I hope to deploy on a monthly basis as I've done with DocProject for the past year+ (since December, 2006 as a matter of fact).&lt;/p&gt; &lt;h5&gt;Planning&lt;/h5&gt; &lt;p&gt;Although DocProject, in the next release [4], will provide first-class support for building mixed reference and conceptual documentation, unbounded filtering capabilities, much improved performance and a mostly finalized API, I still see lots of room for improvement.&amp;nbsp; Namely, in the area of content-based features such as for authoring topics and localization.&amp;nbsp; Also, here's a few of the outstanding tasks &lt;a title="DocProject Work Items" href="http://www.codeplex.com/DocProject/WorkItem/AdvancedList.aspx"&gt;[8]&lt;/a&gt; that I'm going to look into for DocProject 2008:&amp;nbsp; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;Running DocProject in areas of heightened security (e.g., Vista with UAC enabled).  &lt;li&gt;SQL Server full-text search provider for the &lt;em&gt;DocSite&lt;/em&gt; templates.  &lt;li&gt;Microsoft Word and Adobe PDF output.  &lt;li&gt;The ability to annotate comments with developer notes.&amp;nbsp; &lt;li&gt;Automatic token replacement.  &lt;li&gt;Some new &lt;em&gt;DocSite&lt;/em&gt; skins, maybe including one that makes judicious use of SilverLight.&amp;nbsp; (Documentation might start looking better than the software it documents, if I achieve my goal, that is ;)  &lt;li&gt;Change control and better support for team scenarios; e.g., the ability to have a server that continuously builds live documentation to keep it up-to-date.  &lt;li&gt;The development of a simple community wiki for the &lt;em&gt;DocSite&lt;/em&gt; templates, which I guess we can start calling the "DocSite Community Wiki" feature (sure, some might say it's a rip-off of the MSDN Community Content Wiki idea, and I guess they'd be correct ;).&amp;nbsp; This should be very useful in team scenarios for large, volatile, hosted documentation sets.  &lt;li&gt;The ability to register multiple &lt;em&gt;Build Process Components &lt;/em&gt;&lt;a title="DocProject Build Process: Build Process Components" href="http://www.codeplex.com/DocProject/Wiki/View.aspx?title=Build%20Process#BuildProcessComponent"&gt;[9]&lt;/a&gt; per project, with a management UI as well.&amp;nbsp; I may even turn the Sandcastle/Deployment &lt;a title="DocPoroject Sandcastle/Deployment Plug-In" href="http://www.codeplex.com/DocProject/Wiki/View.aspx?title=Sandcastle%20Deployment%20Plugin"&gt;[10]&lt;/a&gt; engine into a BPC that can be added to any &lt;em&gt;DocProject&lt;/em&gt; or &lt;em&gt;DocSite&lt;/em&gt;. &lt;li&gt;Other various user-defined tasks (bug fixes and feature requests).&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;I have even more ideas that I've been tossing around for a while, so I hope to aggregate them into a blog post and eventually add them as work items in CodePlex.&amp;nbsp; And if you have any ideas for DocProject features please let me know!&lt;/p&gt; &lt;h5&gt;Development&lt;/h5&gt; &lt;p&gt;Development will target Visual Studio 2008 and the .NET 3.5 Framework, and as I mentioned previously, I'm definitely considering rewriting areas of DocProject as a true VS Package with its own custom editors and project types.&amp;nbsp; I'm also considering using WPF for the interfaces.&amp;nbsp; There will be a learning curve but it's one that I'm going to have to accept eventually (and I really do want to learn).&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Collaboration&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;I expect to continue collaborating with community members to find bugs and DocProject's potential for new features.&amp;nbsp; It seems to me that the experience of DocProject users has been positive, so I'd like to continue working on DocProject in the future in the same way as I've been for the last year.&amp;nbsp; But if you feel differently please let me know.&amp;nbsp; Even though it's open source I'd still like to provide an acceptable level of service and support in my free time since the time that I put into helping end-users is also time that I'm putting into DocProject (even if it's just thought), which helps to make a better product even for me to use.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Extensibility&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;It might also be worth noting that I'm going to maintain the "openness" of DocProject by continuing to introduce new public APIs and areas for extensibility whenever possible.&amp;nbsp; With the limited feedback that I've received, I'd say that DocProject's high level of extensibility was a success.&amp;nbsp; A few people have mentioned to me that their businesses have created custom build engine providers &lt;a title="DocProject: Creating a Build Engine Provider" href="http://www.codeplex.com/DocProject/Wiki/View.aspx?title=Creating%20a%20Build%20Engine%20Provider"&gt;[11]&lt;/a&gt; and build process components, and I've even used BPCs to help people debug issues in the past.&amp;nbsp; Actually, my favorite feature of DocProject might actually be the build process component, which, incidentally, doesn't really have anything in particular to do with documentation.&lt;/p&gt; &lt;h5&gt;Deployment&lt;/h5&gt; &lt;p&gt;It's hard to predict when the first &lt;em&gt;Production&lt;/em&gt; release for DocProject 2008 will be deployed, but if I can use the past year as a metric then I'd say another year from now is certainly reasonable, and possibly even longer than might be required.&amp;nbsp; To be honest, I think the summer of 2008 is a reasonable goal as long as I keep my eyes on the prize.&lt;/p&gt; &lt;h4&gt;Phase 3&lt;/h4&gt; &lt;p&gt;At the start of &lt;em&gt;phase 3&lt;/em&gt; I hope to have already achieved my major goals for DocProject, which includes much better integration into Visual Studio and additional features that will make authoring documentation extremely simple and, in many cases, automated.&amp;nbsp; Thanks to Sandcastle I believe that this goal is attainable.&lt;/p&gt; &lt;p&gt;For the future I think I'm aiming for much better &lt;em&gt;external &lt;/em&gt;support so that non-Visual Studio users will be able to benefit from DocProject's features as well.&amp;nbsp; The team-based features that I mentioned previously might get pushed into this phase, but we'll see how it goes.&amp;nbsp; And finally, I'd like to hear your ideas for where you'd like to see DocProject go.&amp;nbsp; After I'm able to meet most of my own goals I'd like to brainstorm with the community to come up with some new and innovative ideas to be a part of DocProject in the future.&lt;/p&gt; &lt;h4&gt;References&lt;/h4&gt; &lt;p&gt;[1] Sandcastle on CodePlex, &lt;a title="http://www.codeplex.com/Sandcastle" href="http://www.codeplex.com/Sandcastle"&gt;http://www.codeplex.com/Sandcastle&lt;/a&gt;&lt;/p&gt; &lt;p&gt;[2] Microsoft Public License (Ms-PL), &lt;a title="http://opensource.org/licenses/ms-pl.html" href="http://opensource.org/licenses/ms-pl.html"&gt;http://opensource.org/licenses/ms-pl.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;[3] CTP, License and Source Code, &lt;a title="http://www.codeplex.com/Sandcastle/Thread/View.aspx?ThreadId=20557" href="http://www.codeplex.com/Sandcastle/Thread/View.aspx?ThreadId=20557"&gt;http://www.codeplex.com/Sandcastle/Thread/View.aspx?ThreadId=20557&lt;/a&gt;&lt;/p&gt; &lt;p&gt;[4] Dave Sexton's Blog: DocProject 1.10.0 RC Preview, &lt;a title="http://davesexton.com/blog/blogs/blog/archive/2008/01/15/docproject-1-10-0-rc-preview.aspx" href="http://davesexton.com/blog/blogs/blog/archive/2008/01/15/docproject-1-10-0-rc-preview.aspx"&gt;http://davesexton.com/blog/blogs/blog/archive/2008/01/15/docproject-1-10-0-rc-preview.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;[5] Help authoring tool. (2008, January 9). In &lt;i&gt;Wikipedia, The Free Encyclopedia&lt;/i&gt;. Retrieved 11:22, January 17, 2008, from &lt;a href="http://en.wikipedia.org/w/index.php?title=Help_authoring_tool&amp;amp;oldid=183180723"&gt;http://en.wikipedia.org/w/index.php?title=Help_authoring_tool&amp;amp;oldid=183180723&lt;/a&gt;&lt;/p&gt; &lt;p&gt;[6] DocProject Work Items: VS 2008 Shell and Extensibility, &lt;a title="http://www.codeplex.com/DocProject/WorkItem/View.aspx?WorkItemId=14029" href="http://www.codeplex.com/DocProject/WorkItem/View.aspx?WorkItemId=14029"&gt;http://www.codeplex.com/DocProject/WorkItem/View.aspx?WorkItemId=14029&lt;/a&gt;&lt;/p&gt; &lt;p&gt;[7] DocProject Components, &lt;a title="http://www.codeplex.com/DocProject/Wiki/View.aspx?title=DocProject%20Components" href="http://www.codeplex.com/DocProject/Wiki/View.aspx?title=DocProject+Components"&gt;http://www.codeplex.com/DocProject/Wiki/View.aspx?title=DocProject+Components&lt;/a&gt;&lt;/p&gt; &lt;p&gt;[8] DocProject Work Items, Advanced List, &lt;a title="http://www.codeplex.com/DocProject/WorkItem/AdvancedList.aspx" href="http://www.codeplex.com/DocProject/WorkItem/AdvancedList.aspx"&gt;http://www.codeplex.com/DocProject/WorkItem/AdvancedList.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;[9] DocProject's Build Process, Build Process Components, &lt;a title="http://www.codeplex.com/DocProject/Wiki/View.aspx?title=Build%20Process#BuildProcessComponent" href="http://www.codeplex.com/DocProject/Wiki/View.aspx?title=Build+Process#BuildProcessComponent"&gt;http://www.codeplex.com/DocProject/Wiki/View.aspx?title=Build+Process#BuildProcessComponent&lt;/a&gt;&lt;/p&gt; &lt;p&gt;[10] DocProject Sandcastle/Deployment Plug-In, &lt;a title="http://www.codeplex.com/DocProject/Wiki/View.aspx?title=Sandcastle%20Deployment%20Plugin" href="http://www.codeplex.com/DocProject/Wiki/View.aspx?title=Sandcastle+Deployment+Plugin"&gt;http://www.codeplex.com/DocProject/Wiki/View.aspx?title=Sandcastle+Deployment+Plugin&lt;/a&gt;&lt;/p&gt; &lt;p&gt;[11] DocProject tutorial: Creating a Build Engine Provider, &lt;a title="http://www.codeplex.com/DocProject/Wiki/View.aspx?title=Creating%20a%20Build%20Engine%20Provider" href="http://www.codeplex.com/DocProject/Wiki/View.aspx?title=Creating+a+Build+Engine+Provider"&gt;http://www.codeplex.com/DocProject/Wiki/View.aspx?title=Creating+a+Build+Engine+Provider&lt;/a&gt;&lt;/p&gt;&lt;img src="http://davesexton.com/blog/aggbug.aspx?PostID=86" width="1" height="1"&gt;</description><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/wiki/default.aspx">wiki</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/Sandcastle/default.aspx">Sandcastle</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/DocProject/default.aspx">DocProject</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/documentation/default.aspx">documentation</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/CodePlex/default.aspx">CodePlex</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/Open+Source/default.aspx">Open Source</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category></item><item><title>DocProject for Sandcastle: Custom Topics</title><link>http://davesexton.com/blog/blogs/blog/archive/2007/05/12/docprojectcustomtopics.aspx</link><pubDate>Sat, 12 May 2007 14:33:00 GMT</pubDate><guid isPermaLink="false">5b5c6d2b-d071-4bf8-ac28-4f9cd768b39b:41</guid><dc:creator>Dave Sexton</dc:creator><slash:comments>1</slash:comments><comments>http://davesexton.com/blog/blogs/blog/comments/41.aspx</comments><wfw:commentRss>http://davesexton.com/blog/blogs/blog/commentrss.aspx?PostID=41</wfw:commentRss><description>&lt;div class="addendum" style="border-right:black 1px solid;padding-right:3px;border-top:black 1px solid;padding-left:3px;padding-bottom:3px;border-left:black 1px solid;padding-top:3px;border-bottom:black 1px solid;"&gt;&lt;span class="addendumTitle"&gt;&lt;em&gt;&lt;strong&gt;Update 2/10/08:&lt;/strong&gt;&lt;/em&gt;&amp;nbsp;&lt;/span&gt;DocProject 1.10.0 RC provides first-class support for Sandcastle's conceptual build process, which compiles additional content written in the XML-based Microsoft Assistance Markup Language (MAML) to produce MSDN-like help topics, optionally in combination with auto-generated reference topics.&amp;nbsp; 19 conceptual templates are provided by DocProject and the MAML schemas are provided for IntelliSense in Visual Studio's XML editor.&amp;nbsp; You can find more information in my blog, &lt;a href="http://davesexton.com/blog/blogs/blog/archive/2008/02/09/docproject-1-10-0-release-candidate.aspx"&gt;here&lt;/a&gt; and &lt;a href="http://davesexton.com/blog/blogs/blog/archive/2008/01/15/docproject-1-10-0-rc-preview.aspx"&gt;here&lt;/a&gt;.&amp;nbsp; If you want to include raw HTML topics into help builds, read &lt;a href="http://davesexton.com/blog/blogs/blog/archive/2007/07/10/AddingAdditionalTopicsUsingDocProject.aspx"&gt;this post&lt;/a&gt; for more information.&lt;/div&gt; &lt;p&gt;Recently, a few people have mentioned that they'd like support in DocProject for generating custom topics that maintain the look and feel of the selected presentation. While designing DocProject I had thought about this and tried to provide an easy way for developers to create custom topics, which is why the &lt;a class="" title="build process" href="http://www.codeplex.com/DocProject/Wiki/View.aspx?title=Build%20Process"&gt;partial build&lt;/a&gt; functionality was developed. But until now I haven't mentioned much about this feature or how it works. &lt;/p&gt; &lt;p&gt;I just added a tutorial to DocProject on CodePlex, which explains how to create custom topics using the &lt;em&gt;partial build&lt;/em&gt; feature: &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Tutorial: Creating Custom Topics &lt;/strong&gt;&lt;br&gt;&lt;a href="http://www.codeplex.com/DocProject/Wiki/View.aspx?title=Creating+Custom+Topics"&gt;http://www.codeplex.com/DocProject/Wiki/View.aspx?title=Creating+Custom+Topics&lt;/a&gt; &lt;/p&gt; &lt;p&gt;The tutorial explains how to create an HTML topic template from one of the files that &lt;strong&gt;Sandcastle&lt;/strong&gt; generates (namely, &lt;em&gt;R_Project.htm&lt;/em&gt;). It also describes how you can use Visual Studio's HTML designer to generate your own topic files based on the template and how to include them in the &lt;strong&gt;Html Help Workshop&lt;/strong&gt; table of contents (TOC). Code is also provided that extends the default &lt;strong&gt;build process component&lt;/strong&gt; to automate some of the steps in the tutorial. &lt;/p&gt; &lt;p&gt;Enjoy, and let me know what you think :) &lt;/p&gt;&lt;img src="http://davesexton.com/blog/aggbug.aspx?PostID=41" width="1" height="1"&gt;</description><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/.NET/default.aspx">.NET</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/Sandcastle/default.aspx">Sandcastle</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/Community+Components/default.aspx">Community Components</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/DocProject/default.aspx">DocProject</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/documentation/default.aspx">documentation</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/CodePlex/default.aspx">CodePlex</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/Open+Source/default.aspx">Open Source</category></item><item><title>DocProject for Sandcastle 1.5.0 Release Candidate</title><link>http://davesexton.com/blog/blogs/blog/archive/2007/04/26/docprojectRC150.aspx</link><pubDate>Thu, 26 Apr 2007 05:11:00 GMT</pubDate><guid isPermaLink="false">5b5c6d2b-d071-4bf8-ac28-4f9cd768b39b:37</guid><dc:creator>Dave Sexton</dc:creator><slash:comments>3</slash:comments><comments>http://davesexton.com/blog/blogs/blog/comments/37.aspx</comments><wfw:commentRss>http://davesexton.com/blog/blogs/blog/commentrss.aspx?PostID=37</wfw:commentRss><description>&lt;P&gt;In this blog entry I'm going to show a preview of one of the new features that I've included in DocProject for the next release. I'll also write a little about my open-source development habits, how I test DocProject and my plans for DocProject in the future. &lt;/P&gt;
&lt;P&gt;But before I begin I'd like to thank everyone that has downloaded DocProject and provided feedback. It's been helpful. Please keep adding &lt;A href="http://www.codeplex.com/DocProject/WorkItem/AdvancedList.aspx"&gt;work items&lt;/A&gt; and starting &lt;A href="http://www.codeplex.com/DocProject/Thread/List.aspx"&gt;discussions&lt;/A&gt; so that I can continue to be informed of the &lt;EM&gt;community's&lt;/EM&gt; needs. &lt;/P&gt;
&lt;P&gt;Those of us that use Visual Studio 2005 do so for different purposes and in different manners, and there's no way that I could test DocProject in every possible situation on my own, so I'm relying on the community to let me know when I've missed a bug in testing and when there's room for improvement. And I'm not just looking for constructive criticism either, so if you have something nice to say about DocProject then please don't be shy :) It's also useful for me to know that people are actually using DocProject and that it's working to meet their needs. &lt;/P&gt;
&lt;H4&gt;My Multi-Project Open Source Development Life-cycle &lt;/H4&gt;
&lt;P&gt;I work weeknights and weekends on the planning and development of my open source projects and my proprietary software. I normally don't work from beginning to end on any particular release, but instead jump back and forth between projects. Usually, a &lt;EM&gt;context switch &lt;/EM&gt;occurs when an idea pops into my head or if I get bored with what I'm doing. That's the beauty of working alone and on personal software. I'm currently working full-time on a desktop application for a client so I don't do much coding on personal projects during daylight hours; however, I do try to answer questions and provide help to the community in a timely manner and, from time-to-time, I'll do some wiki-work mid-day. Working from home has its perks ;) &lt;/P&gt;
&lt;P&gt;Recently, I published &lt;A href="http://www.codeplex.com/aip"&gt;AIP 1.0.0 RTW&lt;/A&gt; to CodePlex and now I'm switching gears to finish work on &lt;A href="http://www.codeplex.com/docproject"&gt;DocProject&lt;/A&gt; for the April 30&lt;SUP&gt;th&lt;/SUP&gt; deployment. I've fixed all of the bugs and added all of the features that have associated work items, including a few that don't, and now I'm on to stabilization. &lt;/P&gt;
&lt;H4&gt;Stabilizing DocProject &lt;/H4&gt;
&lt;P&gt;Stabilizing DocProject isn't so easy. Because it's an Add-In I have to make sure that every feature works in Visual Studio 2005, in many different contexts. Of course, I must also ensure that regression issues don't spring up. &lt;/P&gt;
&lt;P&gt;I didn't write unit tests when DocProject was first conceived, but I'm actually glad now. Unit tests aren't going to work for a very complex Add-In that is hosted by Visual Studio 2005 because I won't be able to properly emulate VS in any mock object, IMO. And even if I could it wouldn't give me peace of mind. Having a script to automate Visual Studio might be useful, but I don't think it's worth the effort to create one. &lt;/P&gt;
&lt;P&gt;I test DocProject by installing it on my Vista box, which is also my development box, and then I create new DocProjects and DocSites from scratch, testing each of the features as I go. I also test DocProject on a Windows Server 2003 VM. To be perfectly honest though, I don't test all of the features each time. There are just too many features to test; although, I usually don't make code changes that will affect &lt;EM&gt;every&lt;/EM&gt; bit. I guess that's another benefit of working alone: I know what I did and usually have a good idea of what components it may have affected. The components that aren't touched at all, for which I'm sure, I'll skip testing. &lt;/P&gt;
&lt;P&gt;Thankfully, I haven't run into many regression issues. I think that's due, in part, to the amount of refactoring that I did in previous versions before I added several of the major features that are in DocProject now. There's still certainly a lot of room for refactoring and once I publish the first RTW I think I may revisit those classes for which I made a mental note. Actually, I'll probably review the entire code-base from scratch and see if I can re-architect DocProject for some of my future plans (more on them below). &lt;/P&gt;
&lt;P&gt;But for now, I'm going to continue stabilizing DocProject until I'm ready to release 1.5.0, by April 30&lt;SUP&gt;th&lt;/SUP&gt;. (BTW, I try to schedule deployments on a Monday so that I have an entire weekend prior to really get down and dirty with testing, last-minute tweaks and writing wikis.) &lt;/P&gt;
&lt;H4&gt;API Topic Management Dialog - Preview&lt;/H4&gt;
&lt;P&gt;Here's a preview of a new feature that I've added to DocProject. It's a dialog that allows a user to configure the &lt;STRONG&gt;apiFilter&lt;/STRONG&gt; configuration element in Sandcastle's &lt;STRONG&gt;MRefBuilder&lt;/STRONG&gt; configuration file, which is now included as a project item in the &lt;EM&gt;Presentation\Configuration&lt;/EM&gt; folder. You can also edit the configuration file manually without tripping up the dialog, as long as your changes conform to the xml schema that Sandcastle requires, of course. &lt;/P&gt;
&lt;P&gt;An API topic is included by checking its check box node in the tree view control and excluded by unchecking it. All topics are included (checked) by default if the &lt;STRONG&gt;apiFilter&lt;/STRONG&gt; configuration section hasn't been used. &lt;/P&gt;
&lt;P&gt;The dialog is accessed in the &lt;EM&gt;Tools Options Page&lt;/EM&gt; for &lt;STRONG&gt;Active Projects&lt;/STRONG&gt; by clicking the ellipses button of the &lt;STRONG&gt;Configuration&lt;/STRONG&gt; &amp;gt; &lt;STRONG&gt;API Topic Management&lt;/STRONG&gt; property. Notice in the image below that another new property has been added as well, &lt;STRONG&gt;MRefBuilder Configuration File Name&lt;/STRONG&gt;, which specifies the name of the config file in the &lt;EM&gt;Presentation\Configuration&lt;/EM&gt; directory to be used with the Sandcastle &lt;EM&gt;MRefBuilder&lt;/EM&gt; program. &lt;/P&gt;
&lt;P&gt;&lt;IMG alt="Finding the API Topic Management Dialog" src="http://davesexton.com/Images/DocProject/APITopicManagementPropertyGrid.jpg"&gt;&lt;BR&gt;&lt;STRONG&gt;Figure 1: Finding the API Topic Management Dialog &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG alt="The API Topic Management Dialog" src="http://davesexton.com/Images/DocProject/APITopicManagement.jpg"&gt;&lt;BR&gt;&lt;STRONG&gt;Figure 2: The API Topic Management Dialog &lt;/STRONG&gt;&lt;/P&gt;
&lt;H5&gt;Regular Expression Filter &lt;/H5&gt;
&lt;P&gt;Use the regular expression filter to include, exclude or locate topics by name using a &lt;EM&gt;managed-style&lt;/EM&gt; regular expression. A link to an MSDN help reference on regular expressions is provided next to a link that pops-up a regular expression quick-help guide, which includes a few examples. You can also choose the regular expression's &lt;EM&gt;options&lt;/EM&gt;. &lt;/P&gt;
&lt;P&gt;The &lt;STRONG&gt;Find&lt;/STRONG&gt; button will locate all matching topics by highlighting them. &lt;/P&gt;
&lt;P&gt;The &lt;STRONG&gt;Apply&lt;/STRONG&gt; button will locate all matching topics, highlight each of them, and ensure that the state of each check box matches the state of the &lt;STRONG&gt;Include matching topics&lt;/STRONG&gt; check box. &lt;/P&gt;
&lt;P&gt;An icon will appear next to the &lt;EM&gt;Find&lt;/EM&gt; button after either button is clicked. The icon's tooltip displays the number of matching topics. The tooltip is automatically displayed for one and a half seconds after the search has completed. Clicking the icon repeatedly will cycle through all of the matching topics, selecting the current node and expanding nodes when necessary. The highlighted color and the icon's appearance differ depending upon whether you have clicked &lt;EM&gt;Find&lt;/EM&gt; or &lt;EM&gt;Apply&lt;/EM&gt;. &lt;EM&gt;Find&lt;/EM&gt; was clicked in &lt;STRONG&gt;Figure 2&lt;/STRONG&gt; and the blue highlights in the tree view are the matching topics. &lt;/P&gt;
&lt;P&gt;Clicking the icon to cycle through the matching topics can be useful. Use the spacebar to toggle (check or uncheck) a matching topic and click the icon to cycle to the next match. Using the icon and the &lt;EM&gt;Find&lt;/EM&gt; button instead of the &lt;EM&gt;Apply &lt;/EM&gt;button&lt;EM&gt; &lt;/EM&gt;will allow you to manually choose from all of the matched topics the ones that should be toggled. &lt;/P&gt;
&lt;H5&gt;Category Filter &lt;/H5&gt;
&lt;P&gt;Use the category filter to include or exclude topics by API category. For instance, to include all interfaces you would first check the &lt;EM&gt;Interfaces&lt;/EM&gt; checkbox and ensure that no other category is checked. Then make sure that the &lt;STRONG&gt;Include matching topics&lt;/STRONG&gt; checkbox is checked to &lt;EM&gt;include &lt;/EM&gt;matching topics (unchecking it will exclude matching topics). Press the &lt;STRONG&gt;Apply&lt;/STRONG&gt; button to apply the changes. &lt;/P&gt;
&lt;P&gt;Like the regular expression filter, an icon will appear next to the &lt;EM&gt;Apply&lt;/EM&gt; button after it's clicked. The icon's tooltip displays the number of matching topics. The tooltip is automatically displayed for one and a half seconds after the search has completed. Clicking the icon repeatedly will cycle through all of the matching topics, selecting the current node and expanding nodes when necessary. &lt;/P&gt;
&lt;H5&gt;How It All Works &lt;/H5&gt;
&lt;P&gt;When you open the dialog it takes some time to fill the tree view, but the dialog remains responsive to user interaction and displays a marquee progress bar in the mean time. In the background, DocProject is actually using the Sandcastle build engine to run a build of the TOC only (the engine was refactored a bit to provide this new functionality).&lt;/P&gt;
&lt;P&gt;Basically, all of the steps up to the Build Assembler are executed in the background.&amp;nbsp; The &lt;STRONG&gt;toc.xml&lt;/STRONG&gt; and &lt;STRONG&gt;reflection.xml&lt;/STRONG&gt; files that are created by the the Sandcastle build steps are&amp;nbsp;then parsed into the tree view nodes.&amp;nbsp; The &lt;EM&gt;toc.xml&lt;/EM&gt; file is used for the layout of the tree view and the &lt;EM&gt;reflection.xml&lt;/EM&gt; file provides most of the information used to construct each topic node.&amp;nbsp;&amp;nbsp;And for each topic node a look-up into the existing &lt;STRONG&gt;apiFilter&lt;/STRONG&gt; configuration section of the &lt;EM&gt;Presentation\Configuration\MRefBuilder.config&lt;/EM&gt; file is performed to discover whether the topic should be included or excluded (checked or unchecked, respectively), by default.&lt;/P&gt;
&lt;P&gt;A temporary copy of each node is made at the time they are created.&amp;nbsp; When you modify the&amp;nbsp;tree view, the copy of each node is preserved for the&lt;EM&gt; &lt;/EM&gt;&lt;STRONG&gt;OK&lt;/STRONG&gt; and &lt;STRONG&gt;Cancel&lt;/STRONG&gt; functionality of the dialog.&lt;/P&gt;
&lt;P&gt;Clicking &lt;EM&gt;OK&lt;/EM&gt; on the dialog doesn't apply the changes, however. You must click &lt;EM&gt;OK&lt;/EM&gt; on Visual Studio's &lt;STRONG&gt;Options&lt;/STRONG&gt; dialog to commit the changes. This allows you to edit the API Topic Management property multiple times before you finally save your changes. If you click &lt;EM&gt;OK&lt;/EM&gt; on the property's dialog and then reopen it, modify something, and click &lt;EM&gt;Cancel&lt;/EM&gt;, then only the changes that you made since the last time the dialog was opened will be canceled. The original changes for which you clicked &lt;EM&gt;OK&lt;/EM&gt; last will be retained. &lt;/P&gt;
&lt;P&gt;When you finally save the changes by clicking &lt;EM&gt;OK&lt;/EM&gt; on the &lt;EM&gt;Options&lt;/EM&gt; dialog, they are written directly to the &lt;EM&gt;MRefBuilder.config&lt;/EM&gt; file, overwriting any existing configuration of the &lt;STRONG&gt;apiFilter&lt;/STRONG&gt; element. Other existing elements and content in the configuration file is left unmodified. &lt;/P&gt;
&lt;P&gt;One stipulation to use this feature is that you must build all of the source projects once before the dialog will display their topics. If you only build some of the source projects then the dialog will only display those API topics. If you clean the solution or otherwise delete any of the output assemblies from the source projects then the corresponding API topics will not be displayed. In other words, the source assemblies have to be present in order for the dialog to display their topics. Showing the dialog does not automatically build all of the source projects so you must build the projects before using the dialog. If you close Visual Studio after building a source project and then reopen it, the assembly will still be there so you won't need to build the project again to use the API Topic Management dialog for a referencing DocProject or DocSite. &lt;/P&gt;
&lt;H5&gt;Performance &lt;/H5&gt;
&lt;P&gt;The MRefBuilder utility is very quick, even for the 13-assembly library that I use to test DocProject's performance. But the dialog, for the same library, does take a considerable amount of time to fill the tree view, and that's what the dialog is doing for the majority of the time that you wait for it to be ready. In testing it took about 5 minutes for the dialog to be ready for 2715 API topics. However, that number only represents &lt;EM&gt;API&amp;nbsp; &lt;/EM&gt;topics, not other topics such as &lt;EM&gt;All Members&lt;/EM&gt;, so the number presented as the &lt;EM&gt;API Topic Management&lt;/EM&gt; property value is somewhat lower than the total number of topics that end up in the compiled help. &lt;/P&gt;
&lt;P&gt;I already see room for improvement in the code base to increase the performance of the dialog, and I was even thinking about possibly adding nodes-on-demand functionality, but I'm going to save those changes for a subsequent release. The idea behind the on-demand behavior, BTW, is that expanding a node for the first time will cause its children to be loaded at that time instead of all nodes being loaded when the dialog opens. However, I have some doubts if that would be useful since the filters will require all nodes to be loaded before they will function properly. Obviously, I still have some things to work out for that feature (which is why I'm not adding it now). &lt;/P&gt;
&lt;P&gt;To improve the performance I plan on using an XmlReader to parse the topics instead of an XmlDocument and I plan on using a lot more custom iterators in C# too (i.e., the &lt;EM&gt;yield&lt;/EM&gt; statement). &lt;/P&gt;
&lt;P&gt;The performance of the tree view and the filters after all of the topics have been loaded is actually quite good; as is the process that writes the changes to disc when you click &lt;EM&gt;OK&lt;/EM&gt; on the &lt;EM&gt;Options&lt;/EM&gt; dialog. &lt;/P&gt;
&lt;H4&gt;DocProject's Past, Present and Future &lt;/H4&gt;
&lt;P&gt;DocProject hasn't been around that long but it has accumulated over 800 downloads between all of its versions, up to the 1.4.0 RC. Currently, DocProject is downloaded about 10 times per day, on average. &lt;/P&gt;
&lt;P&gt;I have some plans for the future of DocProject, feature-wise, but nothing is set in stone. Feedback is a must for me. Please let me know what features you want to see in DocProject and I will consider them. &lt;/P&gt;
&lt;H5&gt;Why doesn't DocProject provide any content-based features? &lt;/H5&gt;
&lt;P&gt;Currently, DocProject is built for automating Sandcastle from within Visual Studio 2005, with extensibility built-in to provide an open-ended environment for developers to control the help-build process. All of the Sandcastle presentation files (xml transformations and configuration files) are included in DocProjects and DocSites so that users can configure Sandcastle the way they want without being restricted to GUIs. In other words, DocProject is not focused on content-based features. DocProject relies on Sandcastle and you, the user, to develop and configure your own documentation. This has always been the most important guideline that I followed since I started developing the first beta. &lt;/P&gt;
&lt;P&gt;Recently I received a request from a user to include some GUI support for things such as adding namespace summaries and customizing the default copyright, header and footer of the HTML topic files generated by Sandcastle (see &lt;A href="http://www.codeplex.com/DocProject/WorkItem/View.aspx?WorkItemId=9717"&gt;work item #9717&lt;/A&gt; and vote if you're interested). Although I have considered adding these features in past releases, I always ended up siding with the idea that DocProject is better off without content-related features, for now. What I mean is that DocProject has always been geared toward making it easier to &lt;EM&gt;build&lt;/EM&gt; documentation using Sandcastle and for users to be able to &lt;EM&gt;develop&lt;/EM&gt; their documentation using Sandcastle, directly. I've purposefully avoided creating interfaces for users to manage the HTML topic files that Sandcastle generates in favor of simply including the xml transformations and configuration files as project items so that users could configure Sandcastle themselves. The reasons are simple: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Sandcastle is not RTW yet and there are changes between CTP releases, naturally. &lt;/LI&gt;
&lt;LI&gt;I consider adding content-based features a major version change from not having any content-based features and I'd rather wait for the first DocProject RTW to correspond with the first Sandcastle RTW before any major changes are implemented in DocProject. &lt;/LI&gt;
&lt;LI&gt;I didn't want to be bogged down with presentation-related issues while I was developing and stabilizing DocProject's feature-base for &lt;EM&gt;building&lt;/EM&gt; documentation, which I consider to be more important now since all Sandcastle files are visible to users and are not modified by DocProject in any way. So users are completely free to configure Sandcastle however they want and I don't have to worry about supporting end-user/DocProject configuration mistakes or issues with the appearance of HTML files that Sandcastle generates. &lt;/LI&gt;
&lt;LI&gt;It seems a bit ridiculous to me for DocProject to offer a textbox so users could edit an HTML header, for example, inside of the Visual Studio 2005 IDE when they can use the XML editor to edit the entire shared content XML file. &lt;/LI&gt;
&lt;LI&gt;I can't help but think that it should be all or nothing. A topic designer must be included or else DocProject should simply rely on Sandcastle and DocProject users to produce the documentation, as it currently does. Without a topic designer, any UI support for presentation would just be a hack, IMO. &lt;/LI&gt;&lt;/UL&gt;
&lt;H5&gt;Planned Features &lt;/H5&gt;
&lt;P&gt;I plan to research some content-based features, including the ability to add namespace summaries and maybe even a basic topic designer for the next major release of DocProject. &lt;/P&gt;
&lt;P&gt;In preparation for the next release of Sandcastle, which I read will include a &lt;A href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1497679&amp;amp;SiteID=1"&gt;new presentation design&lt;/A&gt; (A. Raman, MSDN Forums, Apr 20, 2007; Last Post), I've already begun to find places in the code base that I want to refactor. I'm also going to start testing DocProject in the Orcas CTPs so that it will be ready for Orcas documentation, as long as Sandcastle supports it. &lt;/P&gt;
&lt;P&gt;I'd also like to add a &lt;A href="http://www.codeplex.com/DocProject/WorkItem/View.aspx?WorkItemId=9788"&gt;command-line build feature&lt;/A&gt; (work item #9788) and an &lt;A href="http://www.codeplex.com/DocProject/WorkItem/View.aspx?WorkItemId=9787"&gt;MSBuild task&lt;/A&gt; (work item #9787). I've already thought about how that will work and started refactoring the code base in 1.5.0 in preparation for the changes required to support these features. Some of the changes were included in 1.5.0 simply because they were easy enough to do. &lt;/P&gt;
&lt;P&gt;I've begun to create a command-line executable named, &lt;STRONG&gt;docop&lt;/STRONG&gt; (DocProject Operator) that will eventually automate the build process of a DocProject or DocSite outside of the Visual Studio 2005 IDE. The plan is to run the MSBuild task using the MSBuild API, which I started playing around with last weekend. &lt;/P&gt;
&lt;P&gt;If you are interested in any of the features that I mentioned then please follow the corresponding link and vote on the work item in CodePlex. Thanks!&lt;/P&gt;&lt;img src="http://davesexton.com/blog/aggbug.aspx?PostID=37" width="1" height="1"&gt;</description><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/.NET/default.aspx">.NET</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/Sandcastle/default.aspx">Sandcastle</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/Community+Components/default.aspx">Community Components</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/DocProject/default.aspx">DocProject</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/documentation/default.aspx">documentation</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/CodePlex/default.aspx">CodePlex</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/Open+Source/default.aspx">Open Source</category></item><item><title>2 in 1: DocProject for Sandcastle 1.4.0 and AIP Beta 1</title><link>http://davesexton.com/blog/blogs/blog/archive/2007/04/05/DocProjectForSandcastle1_5F00_4_5F00_0AndAIPBeta1.aspx</link><pubDate>Thu, 05 Apr 2007 05:07:00 GMT</pubDate><guid isPermaLink="false">5b5c6d2b-d071-4bf8-ac28-4f9cd768b39b:35</guid><dc:creator>Dave Sexton</dc:creator><slash:comments>0</slash:comments><comments>http://davesexton.com/blog/blogs/blog/comments/35.aspx</comments><wfw:commentRss>http://davesexton.com/blog/blogs/blog/commentrss.aspx?PostID=35</wfw:commentRss><description>&lt;P&gt;I've just published 2 open source deployments in one month, one of which is a brand new project: Auto-Input Protection (AIP). Both deployments are available on CodePlex. &lt;/P&gt;
&lt;H2&gt;DocProject 1.4.0 Release Candidate Is Now Available&lt;/H2&gt;
&lt;P&gt;DocProject drives the Sandcastle help generation tools using the power of Visual Studio 2005. Choose from various project templates that build compiled help version 1.* or 2.* for all project references. DocProject facilitates the administration and development of project documentation with Sandcastle, allowing you to use the integrated tools of Visual Studio 2005 to customize Sandcastle's output. &lt;/P&gt;
&lt;P&gt;Download &lt;A href="http://www.codeplex.com/DocProject"&gt;DocProject from CodePlex&lt;/A&gt;, which comes with the complete source code (C#). Try it out and &lt;A href="http://davesexton.com/Contact"&gt;let me know what you think&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;Here are some of the new features in 1.4.0: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;DocProject's Sandcastle build engine now uses the Sandcastle March CTP transformations. &lt;/LI&gt;
&lt;LI&gt;DocProjects and DocSites can now build Html Help 1.*, Help 2.*, neither or both via a single build. &lt;/LI&gt;
&lt;LI&gt;The New Project wizard has been extended for the Sandcastle build engine, allowing you to choose the type of help that your project will build (see previous feature). &lt;/LI&gt;
&lt;LI&gt;DocSites use AJAX to improve client-side performance. &lt;/LI&gt;
&lt;LI&gt;DocSite's index can be filtered, client-side. &lt;/LI&gt;
&lt;LI&gt;The tools options page, "Dave Sexton's Tools", has been renamed to "DocProject" and was split into separate sub categories. &lt;/LI&gt;
&lt;LI&gt;A status notification and progress bar now appear during help builds. &lt;/LI&gt;
&lt;LI&gt;Improved error handling, including logging to the Application event log. &lt;/LI&gt;
&lt;LI&gt;Several bug fixes. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Use a DocSite template to build an AJAX-enabled ASP.NET Web Application for your compiled help, which includes an interactive TOC, filterable index, breadcrumbs, an auto-generated header and footer, and a link to download the compiled help file. The auto-generated website has been tested for compatibility with the IE7, Firefox and Opera web browsers only. &lt;/P&gt;
&lt;P&gt;&lt;IMG alt="Example DocSite" src="http://davesexton.com/Images/DocProject/WidgetMill_vs2005_Medium.jpg"&gt;&lt;BR&gt;&lt;STRONG&gt;Figure 1: Example DocSite shown in Internet Explorer 7 on Windows Vista; Sandcastle vs2005 presentation. &lt;/STRONG&gt;&lt;/P&gt;
&lt;H2&gt;Auto-Input Protection Beta 1 for ASP.NET Is Now Available&lt;/H2&gt;
&lt;P&gt;AIP is an extensible ASP.NET web control that provides CAPTCHA protection for your blogs, forums, wikis and websites, greatly reducing the likelihood of unwanted form submission from automated spam and hacks. &lt;/P&gt;
&lt;P&gt;Want to see it in action? Look no further than in the comments section of my own blog posts. :)&lt;/P&gt;
&lt;P&gt;Download &lt;A href="http://www.codeplex.com/aip"&gt;AIP from CodePlex&lt;/A&gt;, which comes with the complete source code (C#). Try it out and &lt;A href="http://davesexton.com/Contact"&gt;let me know what you think&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;Add the AIP web control to a web page with full designer support and only a few modifications to your web.config file: &lt;/P&gt;
&lt;P&gt;&lt;IMG alt="Default AIP Web Control" src="http://davesexton.com/Images/AIP/Example-Default.jpg"&gt;&lt;/P&gt;
&lt;P&gt;Modify the AIP web control's presentation with a custom template and modify the CAPTCHA image that it generates by changing the bitmap and filter providers' settings in your web.config file: &lt;/P&gt;
&lt;P&gt;&lt;IMG alt="Customized AIP Web Control" src="http://davesexton.com/Images/AIP/Example-Blog.jpg"&gt;&lt;/P&gt;
&lt;P&gt;Easily implement custom CAPTCHA algorithms that produce randomized patterns with a custom bitmap provider and filter providers: &lt;/P&gt;
&lt;P&gt;&lt;IMG alt="Customized AIP Web Control - Cross Hatch 1" src="http://davesexton.com/Images/AIP/Example-CrossHatch1.jpg"&gt; &lt;IMG alt="Customized AIP Web Control - Cross Hatch 2" src="http://davesexton.com/Images/AIP/Example-CrossHatch2.jpg"&gt; &lt;IMG alt="Customized AIP Web Control - Cross Hatch 3" src="http://davesexton.com/Images/AIP/Example-CrossHatch3.jpg"&gt; &lt;IMG alt="Customized AIP Web Control - Cross Hatch 4" src="http://davesexton.com/Images/AIP/Example-CrossHatch4.jpg"&gt;&lt;/P&gt;&lt;img src="http://davesexton.com/blog/aggbug.aspx?PostID=35" width="1" height="1"&gt;</description><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/.NET/default.aspx">.NET</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/Sandcastle/default.aspx">Sandcastle</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/DocProject/default.aspx">DocProject</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/CodePlex/default.aspx">CodePlex</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/Open+Source/default.aspx">Open Source</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/Auto-Input+Protection/default.aspx">Auto-Input Protection</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/AIP/default.aspx">AIP</category></item><item><title>DocProject RC1 Update</title><link>http://davesexton.com/blog/blogs/blog/archive/2007/01/21/DocProject-RC1-Update.aspx</link><pubDate>Sun, 21 Jan 2007 23:15:00 GMT</pubDate><guid isPermaLink="false">5b5c6d2b-d071-4bf8-ac28-4f9cd768b39b:12</guid><dc:creator>Dave Sexton</dc:creator><slash:comments>0</slash:comments><comments>http://davesexton.com/blog/blogs/blog/comments/12.aspx</comments><wfw:commentRss>http://davesexton.com/blog/blogs/blog/commentrss.aspx?PostID=12</wfw:commentRss><description>&lt;P&gt;I've made some more modifications to the &lt;STRONG&gt;DocProject&lt;/STRONG&gt; software. Several classes have been refactored again and some new classes have been added. A few work items have been addressed and now there is support for Visual Basic.NET and ASP.NET Web Application projects (&lt;EM&gt;DocSites&lt;/EM&gt;). You can also cancel the build in the middle of a step.&lt;/P&gt;
&lt;P&gt;Download the latest release, version 1.2.0, at &lt;A href="http://www.codeplex.com/DocProject"&gt;DocProject on CodePlex&lt;/A&gt;.&lt;/P&gt;
&lt;H4&gt;Collaboration&lt;/H4&gt;
&lt;P&gt;Steve Bokser, a programmer and a friend of mine, helped me to test the new release by installing it on his machine before I made it available to the public. We identified a few issues that didn't surface during my own testing since we have different versions of Visual Studio installed. I took care of the issues that I could fix before the CodePlex deployment and I adjusted the release notes and wikis to include information regarding the setup and configuration issues. Thanks Steve!&lt;/P&gt;
&lt;H4&gt;Custom Templates&lt;/H4&gt;
&lt;P&gt;An organization may want to create a custom template that their developers can use to create &lt;EM&gt;DocProjects&lt;/EM&gt; or &lt;EM&gt;DocSites&lt;/EM&gt; for their Visual Studio projects. A custom &lt;EM&gt;DocProject&lt;/EM&gt; or &lt;EM&gt;DocSite&lt;/EM&gt; template can provide a standardized means of building compiled help documentation for projects across an entire organization.&lt;/P&gt;
&lt;P&gt;A new tutorial has been added to provide guidance for creating new &lt;EM&gt;DocProject&lt;/EM&gt; and &lt;EM&gt;DocSite&lt;/EM&gt; templates: &lt;/P&gt;
&lt;P&gt;Creating New Templates&lt;BR&gt;&lt;A href="http://www.codeplex.com/DocProject/Wiki/View.aspx?title=Creating%20New%20Templates"&gt;http://www.codeplex.com/DocProject/Wiki/View.aspx?title=Creating%20New%20Templates&lt;/A&gt;&lt;/P&gt;
&lt;H4&gt;Wiki Updates&lt;/H4&gt;
&lt;P&gt;Many of the &lt;A href="http://www.codeplex.com/DocProject/Wiki/View.aspx?title=How%20To..."&gt;How To...&lt;/A&gt; wikis have been modified to reflect changes in the new release. &lt;/P&gt;
&lt;P&gt;A new diagram that illustrates the different components of &lt;STRONG&gt;DocProject&lt;/STRONG&gt; and their relationships appears on the home page wiki now: &lt;/P&gt;
&lt;P&gt;&lt;IMG height=498 alt="DocProject Components" src="http://davesexton.com/Images/DocProject/DocProject%20Components.jpg" width=597&gt;&lt;BR&gt;&lt;STRONG&gt;Figure 1: DocProject Components&lt;/STRONG&gt; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=footerStatement&gt;&lt;STRONG&gt;As always, I'd love to hear from anyone that has something to say about this post.&amp;nbsp;&amp;nbsp;Drop me a comment.&lt;/STRONG&gt;&lt;/P&gt;&lt;img src="http://davesexton.com/blog/aggbug.aspx?PostID=12" width="1" height="1"&gt;</description><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/.NET/default.aspx">.NET</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/Sandcastle/default.aspx">Sandcastle</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/Community+Components/default.aspx">Community Components</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/DocProject/default.aspx">DocProject</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/documentation/default.aspx">documentation</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/CodePlex/default.aspx">CodePlex</category></item><item><title>DocProject RC1 Is Now Available</title><link>http://davesexton.com/blog/blogs/blog/archive/2007/01/09/DocProject-RC1-Is-Now-Available.aspx</link><pubDate>Tue, 09 Jan 2007 19:24:00 GMT</pubDate><guid isPermaLink="false">5b5c6d2b-d071-4bf8-ac28-4f9cd768b39b:11</guid><dc:creator>Dave Sexton</dc:creator><slash:comments>0</slash:comments><comments>http://davesexton.com/blog/blogs/blog/comments/11.aspx</comments><wfw:commentRss>http://davesexton.com/blog/blogs/blog/commentrss.aspx?PostID=11</wfw:commentRss><description>&lt;P&gt;Version 1.1.0 of &lt;A href="http://www.codeplex.com/DocProject"&gt;DocProject&lt;/A&gt;, a release candidate, is now available at CodePlex. Download the &lt;STRONG&gt;DocProject&lt;/STRONG&gt; installer, which also installs the complete source code, &lt;EM&gt;Visual Studio&lt;/EM&gt; solution file and project files, &lt;A href="http://www.codeplex.com/DocProject/Release/ProjectReleases.aspx"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;H4&gt;Updates&lt;/H4&gt;
&lt;P&gt;The latest build includes dramatic changes to the class foundation, refactored to address some of the previous work items. One reason why I made such a drastic overhaul was to provide more robust support for extensibility and the ability to add plug-ins for custom build engines other than just &lt;STRONG&gt;Sandcastle&lt;/STRONG&gt;, which is still included as the only build engine that's built-in to &lt;STRONG&gt;DocProject&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;Another reason why I did a lot of refactoring was because I saw room for improvement. The code is more flexible now, which was required to support the new plug-in framework, but also makes it easier to navigate the code and to extend it at a later time, IMO.&lt;/P&gt;
&lt;P&gt;A description of the changes that were made can be found &lt;A href="http://www.codeplex.com/DocProject/SourceControl/ListDownloadableCommits.aspx"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;H4&gt;A few new help wikis&lt;/H4&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;A href="http://www.codeplex.com/DocProject/Wiki/View.aspx?title=How%20To%20Use%20The%20Source%20Code"&gt;How To Use The Source Code&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.codeplex.com/DocProject/Wiki/View.aspx?title=Creating%20a%20DocProject%20for%20a%20new%20solution"&gt;Tutorial: Creating a DocProject for a new solution&lt;/A&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;There have also been a number of modifications to some of the previous wikis. The complete list of &lt;EM&gt;How To...&lt;/EM&gt; wikis for &lt;STRONG&gt;DocProject&lt;/STRONG&gt; can be found &lt;A href="http://www.codeplex.com/DocProject/Wiki/View.aspx?title=How%20To..."&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;I'm planning to add some more help topics soon, so check &lt;STRONG&gt;CodePlex&lt;/STRONG&gt; for updates. One thing I'd like to add is a simple tutorial that explains how to create your own &lt;STRONG&gt;DocProject&lt;/STRONG&gt; templates (it's really easy). Another thing I'd like to write about is how to create a custom build engine and plug it into &lt;STRONG&gt;DocProject&lt;/STRONG&gt;. It's not quite as easy as creating a new template since it requires writing some code, but it's not too difficult either.&lt;/P&gt;
&lt;H4&gt;Feedback!&lt;/H4&gt;
&lt;P&gt;I'd really like your comments and feedback on this software, so don't be shy :). I've already received some positive feedback. Nothing negative yet - not even constructive criticism. I'm sure it's out there, and I can take it, so bring it on!&lt;/P&gt;
&lt;P&gt;Please feel free to comment here on my blog or in the &lt;STRONG&gt;DocProject&lt;/STRONG&gt; &lt;A href="http://www.codeplex.com/DocProject/Project/ListForums.aspx"&gt;forums&lt;/A&gt; at CodePlex.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=footerStatement&gt;&lt;STRONG&gt;As always, I'd love to hear from anyone that has something to say about this post.&amp;nbsp;&amp;nbsp;Drop me a comment.&lt;/STRONG&gt;&lt;/P&gt;&lt;img src="http://davesexton.com/blog/aggbug.aspx?PostID=11" width="1" height="1"&gt;</description><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/.NET/default.aspx">.NET</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/Sandcastle/default.aspx">Sandcastle</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/Community+Components/default.aspx">Community Components</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/DocProject/default.aspx">DocProject</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/CodePlex/default.aspx">CodePlex</category></item><item><title>DocProject on CodePlex</title><link>http://davesexton.com/blog/blogs/blog/archive/2007/01/02/DocProject-on-CodePlex.aspx</link><pubDate>Tue, 02 Jan 2007 21:54:00 GMT</pubDate><guid isPermaLink="false">5b5c6d2b-d071-4bf8-ac28-4f9cd768b39b:10</guid><dc:creator>Dave Sexton</dc:creator><slash:comments>0</slash:comments><comments>http://davesexton.com/blog/blogs/blog/comments/10.aspx</comments><wfw:commentRss>http://davesexton.com/blog/blogs/blog/commentrss.aspx?PostID=10</wfw:commentRss><description>&lt;A href="http://www.codeplex.com/DocProject"&gt;&lt;IMG style="BORDER-RIGHT:0px;BORDER-TOP:0px;FLOAT:left;BORDER-LEFT:0px;WIDTH:21px;BORDER-BOTTOM:0px;HEIGHT:17px;" height=17 alt="CodePlex Green Hexagon" src="http://davesexton.com/Images/CodeProject_Green_Hexagon.gif" width=21&gt;&lt;/A&gt; 
&lt;P&gt;I'm pleased to announce that &lt;STRONG&gt;DocProject&lt;/STRONG&gt; [1] has been accepted by &lt;STRONG&gt;CodePlex&lt;/STRONG&gt; [2].&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;Please check the project at CodePlex for updates and more information.&lt;/P&gt;
&lt;P&gt;All questions, feedback and issues should be reported at the project in &lt;STRONG&gt;CodePlex&lt;/STRONG&gt; through the &lt;STRONG&gt;Forums&lt;/STRONG&gt; [3] and &lt;STRONG&gt;Issue Tracker&lt;/STRONG&gt; [4].&lt;/P&gt;
&lt;P&gt;For now, &lt;A href="http://davesexton.com/cs/members/Dave+Sexton.aspx"&gt;email me&lt;/A&gt; if you're interested in joining the project as a team member.&lt;/P&gt;
&lt;P&gt;--&lt;BR&gt;References&lt;/P&gt;
&lt;P&gt;[1] DocProject for Sandcastle Installer&lt;BR&gt;&lt;A href="http://www.codeplex.com/DocProject/Release/ProjectReleases.aspx"&gt;http://www.codeplex.com/DocProject/Release/ProjectReleases.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;[2] DocProject on CodePlex&lt;BR&gt;&lt;A href="http://www.codeplex.com/DocProject"&gt;http://www.codeplex.com/DocProject&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;[3] DocProject on CodePlex Forums&lt;BR&gt;&lt;A href="http://www.codeplex.com/DocProject/Project/ListForums.aspx"&gt;http://www.codeplex.com/DocProject/Project/ListForums.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;[4] DocProject on CodePlex Issue Tracker&lt;BR&gt;&lt;A href="http://www.codeplex.com/DocProject/WorkItem/List.aspx"&gt;http://www.codeplex.com/DocProject/WorkItem/List.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P class=footerStatement&gt;&lt;STRONG&gt;As always, I'd love to hear from anyone that has something to say about this post.&amp;nbsp;&amp;nbsp;Drop me a comment.&lt;/STRONG&gt;&lt;/P&gt;&lt;img src="http://davesexton.com/blog/aggbug.aspx?PostID=10" width="1" height="1"&gt;</description><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/wiki/default.aspx">wiki</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/Sandcastle/default.aspx">Sandcastle</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/Community+Components/default.aspx">Community Components</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/DocProject/default.aspx">DocProject</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/documentation/default.aspx">documentation</category><category domain="http://davesexton.com/blog/blogs/blog/archive/tags/CodePlex/default.aspx">CodePlex</category></item></channel></rss>