Type Visualizer and Custom Viewer
A type visualizer is a component that displays a piece of data in a very specific format. This format is entirely up to the implementer of the visualizer, be it the end user or a third-party supplier of visualizers.
A custom viewer is the part of a custom expression evaluator that displays a piece of data in a very specific format. This format is entirely up to the implementer of the custom viewer, which means that the format is up to the implementer of the expression evaluator (EE).
An EE can support type visualizers by supporting a set of interfaces accessible to visualizers: interfaces such as IEEVisualizerService and IEEVisualizerDataProvider. Note, however, that the EE is not responsible for implementing the type visualizer itself: the EE merely allows external visualizers access to its type information. Such visualizers might be shipped along with the EE and installed in the appropriate place in Visual Studio, supplied by another third-party vendor or even by the end user.
An EE can also support custom viewers in which the EE itself supplies the code for viewing the data type. A custom viewer implements the IDebugCustomViewer interface, which handles all the duties of showing the data in whatever format is desired; the viewer has full control over the display and can even allow the data to be modified. Any custom viewers supplied by the EE come with the EE when the product is shipped.