如何在Visual Studio中指定debugging器可视化器的顺序

我一直在Visual Studio的debugging器可视化工作一段时间,而实际的可视化工作正常。 问题是,当检查一个variables时,它总是把自己置于可视化列表的顶部,而这个variables真的让一些用户更加恼火,因为顶级的用户也是默认打开VS的用户。

在这里输入图像说明

我无法在DialogDebuggerVisualizer或DebuggerVisualizerAttribute上find任何支持,这是我的第一个想法,所以我一直在searchSO / MSDN / Google,了解如何影响可视化器的sorting顺序(最好是把我的最后一个放在列表中)但无济于事。

下面是我如何注册我的可视化器,然后只是显示一个基于正在可视化的值的forms。

using Microsoft.VisualStudio.DebuggerVisualizers; [assembly: System.Diagnostics.DebuggerVisualizer( typeof(Shorthand.VSAddins.JsonVisualizer.JsonVisualizer), typeof(VisualizerObjectSource), Target = typeof(string), Description = "Json Visualizer")] namespace Shorthand.VSAddins.JsonVisualizer { public class JsonVisualizer : DialogDebuggerVisualizer { protected override void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider) { var json = objectProvider.GetObject() as string; var form = new VisualizerForm { Json = json }; windowService.ShowDialog(form); } } } 

有谁知道是否有可能影响可视化的顺序,或者我应该让它成为?

我不认为有一个解决scheme。 但有一个解决方法:

定义您自己的Text Visualizer并在JsonVisualizer属性之前放置适当的DebuggerVisualizer属性。 结果将是该string默认是可读的,可以selectJson Visualizer。 一个多行文本框的窗口是不是太多的工作。

可能甚至不需要编写可视化器。 应该可以使用内部的,但是我不知道它的名字( “Text Visualizer”使用哪个类? )。

它总是会出现在devise中。 引擎盖下面find了它所反映的variables的最佳匹配。

不过,你可以做两件事情之一。 您可以使可视化工具仅在sting包含“:”时出现。或者,您可以使用reflection按顺序将可视化工具添加到集合的末尾,然后从集合中删除原始对象。 对于后者,您将很可能必须将集合从只读更改为可写。 通过reflection。

没有可靠的来源去借鉴,而不是你的意志成功。

我猜测'引擎盖下'的VS可以很容易地区分string的types和xml的types,但是Xml也只是一个string,所以这里的一个关键问题是,VS如何区分两者?

你可以剖析VS XML可视化工具,看看它是如何工作的(即使你必须在DLL上使用reflection器来做到这一点,你可能会看到实现它的方法)