Просто поясню: я понятия не имею, почему получение и указание другого атрибута отключает визуализатор.
Я пробовал что-то подобное, и ничто не мешает вам применить к типу как DebuggerDisplay
, так и DebuggerVisualizer
. На изображении ниже показаны оба: левый кружок — это визуализатор отладчика, правый кружок — это дисплей отладчика:
![Отображение отладчика и визуализатор видны](https://i.stack.imgur.com/lQwwU.png)
Однако у вас могут возникнуть проблемы с попыткой использовать тип DataSetVisualizer
в вашем классе. Потребовалось много махинаций, но в итоге я получил следующее определение для своего класса:
[Serializable]
[DebuggerVisualizer(typeof(EnhancedDataSetVisualizer.DataSetVisualizer),
typeof(EnhancedDataSetVisualizer.DataSetVisualizerSource))]
[DebuggerDisplay("{Name}")]
public sealed class SpecFlowTableWrapper : DataSet
{
// Body omitted, not important.
}
Мне постоянно приходилось менять аргументы, которые я указывал в DebuggerVisualizer
. Оказывается, недостающей частью для меня было указание VisualizerObjectSource
.
Затем я получаю дисплей отладчика, показывающий имя моего набора данных, и когда я щелкаю увеличительное стекло, он загружает файл DataSetVisualizer
.
Важной частью всего этого являются две ссылки:
- Microsoft.VisualStudio.Debugger.DataSetVisualizer
Он содержит типы DataSetVisualizer
и DataSetVisualizerSource
.
- Microsoft.VisualStudio.DebuggerVisualizers
Это зависимость от другой ссылки.
Второй элемент обычно доступен в диалоговом окне «Добавить ссылки...» в Visual Studio, однако первый элемент находится в каталоге установки VS.
Для меня (версия VS может отличаться):
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Packages\Debugger\Visualizers\
Называется:
Microsoft.VisualStudio.Debugger.DataSetVisualizer.dll
Убедитесь, что «Копировать локально» верно и для первой ссылки (в любом случае, по умолчанию оно должно быть правдой). Обратите внимание, что для отладки эта ссылка теперь является зависимостью, поэтому вам нужно убедиться, что она находится в рабочем каталоге любого проекта, который вы отлаживаете, иначе вы получите ошибки отладчика VS.
Пересоберите, запустите отладчик, наслаждайтесь. Жаль, что опоздал на 2 года.
person
Adam Houldsworth
schedule
23.08.2012