Как указать порядок визуализаторов отладчика в Visual Studio - программирование
Подтвердить что ты не робот

Как указать порядок визуализаторов отладчика в Visual Studio

Я работаю над визуализатором отладчика для Visual Studio в течение некоторого времени, и пока фактический визуализатор отлично работает. Проблема в том, что он всегда помещается в верхнюю часть списка визуализатора при рассмотрении переменной, которая действительно раздражает некоторых из пользователей, у которых скорее есть текст как верхний (поскольку верхняя часть также по умолчанию при открытии VS).

enter image description here

Я не могу найти поддержку для этого на 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);
        }
    }
}

Кто-нибудь знает, можно ли повлиять на порядок визуализаторов, или я просто позволю?

4b9b3361

Ответ 1

Я не думаю, что есть решение. Но есть обходное решение:

Определите свой собственный текстовый визуализатор и поместите соответствующий атрибут DebuggerVisualizer перед атрибутом вашего JsonVisualizer. В результате будет отображаться строка по умолчанию, и Json Visualizer может быть выбран. Окно с многострочным текстовым полем не слишком много работает.

Вероятно, даже не нужно писать визуализатор. Должна быть возможность использовать внутреннюю, но я не знаю ее имени (Какой класс используется для "Текстового визуализатора" ?).

Ответ 2

Он всегда будет отображаться первым, по дизайну. Под капотом найдено наилучшее совпадение переменной, на которую оно отражается.

однако, вы могли бы сделать одну из двух вещей. Вы можете заставить визуализатор появляться только тогда, когда укуса содержит ":" Или вы можете использовать отражение, чтобы изменить порядок визуализаторов, добавив их в конец коллекции в том порядке, который вы хотите, а затем удалите оригиналы из коллекции. Для последнего вам, скорее всего, придется менять коллекцию с readonly на запись. Через отражение.

Нет надежного источника для того, чтобы привлечь других, чем ваша воля, чтобы добиться успеха.

Ответ 3

Я предполагаю, что VS 'под капотом' может легко различать тип строки и тип xml, но Xml также является строкой, поэтому ключевым вопросом здесь будет то, как VS указывает разницу между двумя

Не могли бы вы проанализировать визуализатор VS XML, чтобы увидеть, как он работает (даже если вам нужно использовать рефлектор для DLL, вы можете увидеть, как он работает)