我发现DebuggerVisualizerAttribute
中出现的某些类型会阻止显示所有可视化工具。它们不仅存在于其中,而且除了最通用的(Text,XML,JSON,HTML)之外。甚至DataTable可视化工具也被阻止了。到目前为止,我已经确定了SortedList<int,string>
,DataRow[]
(Datarow数组)和许多其他人。
我需要从生成的类型列表中排除这些类型(用于可视化界面)。我没有设法得到任何错误消息(调试输出,ActivityLog.xml,调试Visual Studio与其他实例,WinDbg未经过测试)。
我使用VS2017,.NET 4.7.1,W 10 x64 EN(我没有注意到VS2012,.NET 4.5 W 7上的问题,但它在VS2015中被复制)
[assembly: System.Diagnostics.DebuggerVisualizer(typeof(MyFirstVisualizer.DebuggerSide), typeof(VisualizerObjectSource), Description = "Failing1",
Target = typeof(System.Collections.Generic.SortedList<int, string>))]
[assembly: System.Diagnostics.DebuggerVisualizer(typeof(MyFirstVisualizer.DebuggerSide), typeof(VisualizerObjectSource), Description = "Failing2",
Target = typeof(System.Data.DataRow[]))]
或vb.net
<Assembly: System.Diagnostics.DebuggerVisualizer(GetType(MyFirstVisualizer.DebuggerSide), GetType(VisualizerObjectSource), Description:="Failing1",
Target:=GetType(System.Collections.Generic.SortedList(Of Integer, String)))>
<Assembly: System.Diagnostics.DebuggerVisualizer(GetType(MyFirstVisualizer.DebuggerSide), GetType(VisualizerObjectSource), Description:="Failing2",
Target:=GetType(System.Data.DataRow()))>
我注意到大多数问题类型都是Constructed Generic Types,我通过.IsGenericType
和.IsConstructedGenericType
来排除问题,从而解决了问题。
我没有将解决方案写成答案,因为Dictionary<int,string>
不会导致问题,DataRow[]
不是构造的通用类型。