microsoft / ConcordExtensibilitySamples

Visual Studio Debug Engine Extensibility Samples
Other
121 stars 50 forks source link

IEnumerable Visualizer shows properties that are marked with attribute to hide them in the debugger #108

Open RobertvanderHulst opened 8 months ago

RobertvanderHulst commented 8 months ago

We have added IEnumerable Visualizer support for some of our own collection types. One of these collections contains values of an internal type (like the COMVariant Type) and we have marked several properties that are for internal use with [DebuggerBrowsable(DebuggerBrowsableState.Never)]. The IEnumerable Visualizer still shows these properties. We have also tried to work around this by adding a DebuggerProxy for that type, but the Visualizer ignores that. Is there a way to control which fields and properties are shown by the IEnumerable Visualizer ?

gregg-miskelly commented 8 months ago

The custom visualizer mechanism is currently entirely different from the way expression evaluation works. It works by injecting a dll into the target process and running whatever code the custom visualizer wants. In the case of the IEnumerable visualizer, this is a bunch of reflection calls to inspect the object that way.

All that said, respecting [DebuggerBrowsable(DebuggerBrowsableState.Never)] make lots of sense to me. I will open a Visual Studio bug for this.