我有一个DataTable的后代,它定义了DebuggerDisplay属性。添加DebuggerDisplay属性时,将删除DataTable的默认可视化工具。如果我删除DebuggerDisplay属性,DataTable可视化器将返回。我想要默认的DataTable可视化工具和我对DebuggerDisplay的覆盖。
你们知道如何让它发挥作用吗?
//does not work
//[DebuggerVisualizer("Microsoft.VisualStudio.Debugger.DataSetVisualizer", typeof(DataTable))]
//DebuggerDisplay attribute removes DataTable visualizer. Odd behavior to me.
[DebuggerDisplay("{TableName}, Count = {Rows.Count}, {GetColumnNames()}")]
public class MyTable<T> : DataTable where T : class{}
答案 0 :(得分:2)
为了澄清,我不知道为什么导出和指定不同的属性会禁用可视化工具。
我尝试了类似的东西,没有什么能阻止你将DebuggerDisplay
和DebuggerVisualizer
应用于某个类型。下图显示了两个,左侧圆圈是调试器可视化器,右侧圆圈是调试器显示器:
但是,在您的课程中尝试使用DataSetVisualizer
类型时可能会遇到问题。 jiggery-pokery花费了很多次,但最终我的课程定义如下:
[Serializable]
[DebuggerVisualizer(typeof(EnhancedDataSetVisualizer.DataSetVisualizer),
typeof(EnhancedDataSetVisualizer.DataSetVisualizerSource))]
[DebuggerDisplay("{Name}")]
public sealed class SpecFlowTableWrapper : DataSet
{
// Body omitted, not important.
}
我经常不得不改变我在DebuggerVisualizer
中指定的参数。事实证明,缺少的部分是指定VisualizerObjectSource
。
然后我得到显示我的数据集名称的调试器显示,当我点击放大镜时,它会加载DataSetVisualizer
。
所有这一切的重要部分是两个参考:
这包含DataSetVisualizer
和DataSetVisualizerSource
类型。
这是另一个参考的依赖。
第二项通常在Visual Studio的“添加引用...”对话框中可用,但是第一项可以在VS安装目录中找到。
对我来说(VS版本可能会有所不同):
C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ Common7 \软件包\调试\展示台\
调用:
Microsoft.VisualStudio.Debugger.DataSetVisualizer.dll
确保“复制本地”对于第一个参考也是如此(无论如何它应该是默认的)。请注意,对于调试,此引用现在是一个依赖项,因此您需要确保它在您正在调试的任何项目的工作目录中,否则会出现VS调试器错误。
重新构建,启动调试器,享受。对不起,已经晚了2年。