9

当我使用 DebuggerVisualizer如下属性时

C#

[assembly: DebuggerVisualizer(typeof(DataSetVisualizer), typeof(DataSetVisualizerSource), Target = typeof(DataTable), Description = "My DataTable Visualizer")]

VB.net

<Assembly: DebuggerVisualizer(GetType(DataSetVisualizer), GetType(DataSetVisualizerSource), Target := GetType(DataTable), Description := "My DataTable Visualizer")>

我可以在我的可视化工具 dll 中重用数据集可视化工具。即使定义了自定义DataTable可视化器(如何在 Visual Studio 中指定调试器可视化器的顺序),这也允许将 VS 可视化器作为第一个(默认)内置。

我想为“Text Visualiser”实现相同的行为。

4

1 回答 1

3

不幸的是,我不相信文本可视化器有一个托管类,至少就使用调试器可视化器的文档化 VS API 而言。如果 Text Visualizer 有特定的类,我无法通过反映与调试相关的托管程序集来找到它。

创建自定义可视化器的文档指出自定义可视化器将从DialogDebuggerVisualizer继承。但是,如果您反映 Microsoft.VisualStudio.DebuggerVisualizers.dll,您会看到使用此过程实现的 VS 附带的唯一可视化工具是 DataSetVisualizer 类(我使用的是 VS2012,但它们来自 VS2008 的文档表明使用 DialogDebuggerVisualizer 的相同过程) . 因此,不会有可以与 DebuggerVisualizerAttribute 一起使用的正确类名。这是DotPeek反射的快照:

Microsoft.VisualStudio.DebuggerVisualizers.dll 的 DotPeek 反射

其他可视化工具很可能不是托管代码,或者可能是可跨托管和非托管代码使用的动态构造(最坏的情况是它们是 Visual Studio 早期版本的遗留遗留物)。

于 2013-11-18T18:14:26.683 回答