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

Kar*_*ren 47 c# debuggervisualizer visual-studio

我一直在为Visual Studio的调试器可视化器工作一段时间,而实际的可视化工作正常.问题是,在检查变量时,它始终将自己置于可视化列表的顶部,这些变量确实会使一些用户更喜欢Text作为最顶层的用户(因为最顶层的用户在打开VS时也是默认值).

在此输入图像描述

我在DialogDebuggerVisualizerDebuggerVisualizerAttribute上找不到任何支持,这是我的第一个想法,所以我一直在搜索SO/MSDN/Google,了解如何影响可视化器的排序顺序(最好把我的最后一个放在列表中) )但无济于事.

下面是我如何注册我的可视化工具,然后它只显示一个基于可视化值的表单.

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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有谁知道是否有可能影响可视化器的顺序,还是应该让它成为现实?

小智 0

根据设计,它总是首先出现。幕后演员已经找到了与其所反映的变量的最佳匹配。

但是,您可以执行以下两件事之一。您可以使可视化工具仅在字符串包含“:”时出现,或者您可以使用反射对可视化工具重新排序,方法是将它们按所需顺序添加到集合的末尾,然后从集合中删除原始对象。对于后者,您很可能必须将集合从只读更改为可写。通过反射。

除了你成功的意愿之外,没有任何可靠的来源可以利用。