<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Barry Jones &#187; Current Work: Live Documenter &#8211; Barry Jones</title>
	<atom:link href="http://www.barryjones.me.uk/tag/xml-comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.barryjones.me.uk</link>
	<description>General Ramblings</description>
	<lastBuildDate>Mon, 06 Sep 2010 10:05:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Current Work: Live Documenter</title>
		<link>http://www.barryjones.me.uk/2009/10/current-work-live-documenter/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=current-work-live-documenter</link>
		<comments>http://www.barryjones.me.uk/2009/10/current-work-live-documenter/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 21:43:47 +0000</pubDate>
		<dc:creator>Barry Jones</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[My Projects]]></category>
		<category><![CDATA[CLR]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[XML Comments]]></category>

		<guid isPermaLink="false">http://www.barryjones.me.uk/?p=48</guid>
		<description><![CDATA[I had nothing else to talk about so I thought I would give a little ramble on my current project. It has been &#8216;code named&#8217; Live Documenter, which will probably end up being its final name as well &#8211; if only I was more creative. OK, onward! Basically since NDoc curled up and died a [...]]]></description>
			<content:encoded><![CDATA[<p>I had nothing else to talk about so I thought I would give a little ramble on my current project. It has been &#8216;code named&#8217; Live Documenter, which will probably end up being its final name as well &#8211; if only I was more creative. OK, onward!</p>
<p>Basically since <a title="NDoc stagnating since 2005" href="http://ndoc.sourceforge.net/" target="_blank">NDoc</a> curled up and died a long time ago I have really wanted a nice xml comment documenter to read all those lovely comments I have been painstakingly hand crafting since , well, as long as I can remember. This has been curled up at the back of mind for ages. And a little while ago I decided I would start faffing around with the .NET meta-data and just try to learn a little more about how the <acronym title="Common Language Runtime">CLR</acronym> holds it&#8217;s data in <acronym title="Portable Executable">PE</acronym> files, what kind of data and well.. OK I can&#8217;t justify it really. Anyway; two thoughts collided and the rest is unwritten history.<span id="more-48"></span></p>
<h2>What it Does</h2>
<p>This documentor takes a solution, project or library and churns through all the internal gubbins of the built libraries for the <acronym title="Visual Studio">VS</acronym> files or itself for the DLL. It then locates the lovely XML comment files, mingles them together and spits out some nice legible information. I haven&#8217;t painted that in the most beautiful light but I am British so it remains understated.</p>
<ul>
<li>Reads VS Solution, Project and Library files</li>
<li>Parses XML comments (supports the basic <a href="http://msdn.microsoft.com/en-us/library/5ast78ax(VS.80).aspx" target="_blank">Microsoft set</a>) to produce documentation</li>
<li>Updates live the changes you make to the your source code</li>
<li>Allows searching of types, properties and methods</li>
<li>Supports code comments for generic types and methods</li>
<li>Provides syntax in C# or Visual Basic</li>
</ul>
<p>It was a real struggle getting information about the internal workings of PE files, the Internet is a little sparse in this regard, so I had to get the aid of two books <a title=".NET IL Assembler" href="http://www.amazon.co.uk/Inside-NET-IL-Assembler-Lidin/dp/0735615470/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1255037193&amp;sr=8-2" target="_blank">.NET IL Assembler</a> and <a title="Reversing - The secrets of reverse engineering" href="http://www.amazon.co.uk/Reversing-Secrets-Engineering-Eldad-Eilam/dp/0764574817/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1255037247&amp;sr=1-1" target="_blank">Reversing</a> to help me on the way. Whilst I was reinventing the wheel Microsoft released an open source reflection library (which I can no longer find a link to) which seems to do everything, ah well. However, I think I will in future posts, describe in a little more detail what I did and learnt while making this app.</p>
<h2>Appearances can be Deceiving</h2>
<p>This doesn&#8217;t look the best at the moment, but it&#8217;s still in development so bear with me! I really need to polish the front end up and apply some UX magic; so with that in mind lets have a look at some screenies.</p>
<div id="attachment_105" class="wp-caption alignleft" style="width: 160px"><a href="http://www.barryjones.me.uk/wp-content/uploads/2009/10/type-view.png" rel="lightbox[48]"><img class="size-thumbnail wp-image-105" title="Live Documentor - Type Page" src="http://www.barryjones.me.uk/wp-content/uploads/2009/10/type-view-150x102.png" alt="Live Documentor - Type Page" width="150" height="102" /></a><p class="wp-caption-text">View of a Class</p></div>
<div id="attachment_111" class="wp-caption alignright" style="width: 160px"><a href="http://www.barryjones.me.uk/wp-content/uploads/2009/10/namespace-view.png" rel="lightbox[48]"><img class="size-thumbnail wp-image-111" title="namespace view" src="http://www.barryjones.me.uk/wp-content/uploads/2009/10/namespace-view-150x102.png" alt="namespace view" width="150" height="102" /></a><p class="wp-caption-text">View of a Namespace</p></div>
<p>The class view has all of the information you would expect. Full namespace declaration, deceleration syntax, all your lovely comments, inheritance tree and by the powers of WPF lots of control over how you view the page. All of the param references, type references, exception information (for methods) is linked up from the comments. The UI currently allows you to view easily which libraries have comments and which don&#8217;t.</p>
<p>As you can see by the method view below, it supports generic types and methods. Type, method, property etc signatures are generated and can be changed to multiple languages; although I have only written code to support VB and C# at the moment.</p>
<div id="attachment_113" class="wp-caption alignleft" style="width: 160px"><a href="http://www.barryjones.me.uk/wp-content/uploads/2009/10/method-view-generic.gif" rel="lightbox[48]"><img class="size-thumbnail wp-image-113" title="Live Documentor - View of Generic Method" src="http://www.barryjones.me.uk/wp-content/uploads/2009/10/method-view-generic-150x107.gif" alt="View of a Method" width="150" height="107" /></a><p class="wp-caption-text">View of a Method</p></div>
<p>I all in all am pretty excited about where this is going at the moment and for the ideas I have about where it will be going on a more long term basis. One little thing I &#8211; in the long term &#8211; am hoping to get in there is dynamically creating <a title="Unified Modelling Language" href="http://en.wikipedia.org/wiki/Unified_Modeling_Language" target="_blank">UML</a> diagrams. The idea of being able to see a methods full sequence diagram, cant be anything but a help for people working on new projects or revisiting old ones!</p>
<p>Finally, the main idea behind this application is that it is used more like a live reference, an open book; which you would have open at the same time as a project. Because of this the application will continually update itself based on changes you make to your solutions, projects, code and comments. I thought that was a little different from your normal wait for application to generate static pages, currently event with a large 20 project solution this still opens quickly and is extremely usable. I hope that has made you interested and I will speak up again when I have something that I can throw out there.</p>
<p>This application will be made available from my company, <a href="http://www.theboxsoftware.com">The Box Software</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.barryjones.me.uk/2009/10/current-work-live-documenter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

