![](/img/trans.png)
[英]Using Debugger Visualizers in Visual Studio without having to copy its dll assembly to VS's folder
[英]How to specify order of debugger visualizers in Visual Studio
我一直在為Visual Studio的調試器可視化器工作一段時間,而實際的可視化工作正常。 問題是,在檢查變量時,它始終將自己置於可視化列表的頂部,這些變量確實使一些用戶更喜歡將Text作為頂級用戶(因為在打開VS時,前者也是默認值)。
我在DialogDebuggerVisualizer或DebuggerVisualizerAttribute上找不到任何支持,這是我的第一個想法,所以我一直在搜索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.