簡體   English   中英

如何在Visual Studio中指定調試器可視化器的順序

[英]How to specify order of debugger visualizers in 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);
        }
    }
}

有誰知道是否有可能影響可視化器的順序,還是應該讓它成為現實?

我認為沒有解決方案。 但有一個解決方法:

定義自己的Text Visualizer並在JsonVisualizer屬性之前放置適當的DebuggerVisualizer屬性。 結果是默認情況下該字符串是可讀的,並且可以選擇Json Visualizer。 具有多行文本框的窗口不是太多工作。

甚至可能不需要編寫可視化工具。 應該可以使用內部的一個,但我不知道它的名稱( 哪個類用於“Text Visualizer”? )。

它總是首先出現在設計上。 引擎蓋下的演員已經找到了它所反映的變量的最佳匹配。

但是,你可以做兩件事。 您可以僅在sting包含':'時顯示可視化工具。或者您可以使用反射按順序將可視化工具按順序添加到集合的末尾,然后從集合中刪除原件。 對於后者,您很可能必須將集合從只讀更改為可寫。 通過反思。

除了你的成功意願之外,沒有可靠的消息來源。

我猜VS'引擎蓋'可以很容易地區分字符串的類型和xml的類型,但是Xml也只是一個字符串,所以這里的一個關鍵問題是,VS如何區分兩者之間的區別?

您是否可以剖析VS XML可視化工具以查看它是如何工作的(即使您必須在DLL上使用反射器來執行此操作,您可能會看到可以解決的方法)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM