Howard Van Rooijen recently emailed me about the XML Debugger Visualizer he's developing, wondering about upcoming changes to the API in Beta2.

First let's talk about Howard's visualizer. It looks quite flashy and cool - at least check out the screenshots in his post about it. The cool thing about his visualizer is its use of a custom VisualizerObjectSource. VisualizerObjectSource is the class on the debuggee side which has access to the data itself and sends it across the wire in stream form to the debugger side, which is responsible for displaying the data (and possibly allowing edits). So congratulations to Howard for being the first person I've seen outside of Microsoft to create a visualizer like this! (just did a search on VisualizerObjectSource, found nothin'...)

Howard has inspired me - I'd like to link to most of the visualizers out there to help start the community around them. If you have developed one, let me know, I'll link to it. Keep in mind, of course, that installing any of these third-party visualizers will involve running that code, so watch yourself.

Here are a few links:

  • Super-basic Image Visualizer - The canonical example. You can see mine as part of my TechEd demos here):
  • String Visualizer - Though VS2005 will ship with string visualizers, the save capabilities are nice (this guy complains that XmlNode isn't serializable - Howard found the solution to that problem)
  • Dataset Visualizer - I should mention that VS2005 will ship with a Datagrid-based Dataset visualizer by default (which supports modifying the data, and only sends the necessary data across) - perhaps this one will improve upon it...
  • Hashtable Visualizer - Very flashy; written as part of an MSDN Magazine article.
  • Visualizer Article - Unfortunately this isn't available to the unpaid masses, but it does discuss Visualizers. And Julia has been excited about Visualizers for a long time, so I thought I'd throw this link in there.

I did some searches, but I couldn't easily find any others. Submit your visualizer and I'll (probably) link back to you!

Alright, now for Howard's question and the partially bad news. Anyone in the list above or who has created a visualizer already will be affected by the upcoming API changes in Beta2. They have been in the last few Community Tech Previews, but not everyone installs those. :0) I have an update to my MSDN article just about ready for publication, so watch for that. In the meantime, I'll describe at a high level what the changes are:

  • We've modified the APIs to no longer require VisualizerUIType, since we only support modal visualizers in VS 2005
  • We've made the DebuggerVisualizer attribute much easier to use - the default case without the Target named parameter only requires one argument: the debugger-side class (you'd probably want to specify a description for the visualizer too...)
  • We've simplified the debugger-side class - where before it implemented an interface and required you to check the VisualizerUIType, now you derive from DialogDebuggerVisualizer, which assumes that the UIType is modal dialog. Again, this fits with our VS 2005 support.
  • We've made all the APIs more consistent: DebuggerVisualizer, VisualizerDevelopmentHost (didn't know about this? it's a great way to test your visualizer - it's in Microsoft.VisualStudio.DebuggerVisualizers), etc. - they all use the same naming conventions, etc.

I'll post my TechEd demos ported to Beta2 in the next week or so to help the Beta2 early adopters... Seeya next time, and let me know if you're developing a visualizer!

[see my visualizers category for discussion/documentation and links to other visualizers]