В дополнение к ответам, приведенным выше, я нашел простое решение для отладки «на месте» в Visual Studio (2015).
Подготовка
Как писал Рэй Вега, добавьте ссылку на версию x86 (помните, что Visual Studio по-прежнему не 64-разрядная!) LinqPad (то есть Добавить ссылку -> Просмотр в расположение исполняемого двоичного файла, обычно находящегося в каталоге установки C: \ Program Files \ LINQPad \ -> выберите LINQPad.exe.)
В области, в которой вы хотите использоватьdump, добавьте:
public static dynamic dump = LINQPad.Util.CreateXhtmlWriter();
Чтобы создать дамп, добавьте к своему коду, где вам нужен дамп:
dump.Write(obj); // obj = the object to dump
Добавьте точки останова, гдетребуется.
Примечание: Если вам требуется совместимость с методом LinqPad .Dump () , объявите следующее вместо шагов 2. и3.:
public static class DumpExtension
{
private static dynamic dump = LINQPad.Util.CreateXhtmlWriter();
public static T Dump<T>(this T objToDump)
{
dump.Write(objToDump);
return objToDump;
}
}
В этом случае разместите точку останова в строке, где находится оператор return objToDump
.
Визуализация
В окне просмотра добавьте
dump.ToString()
Щелкните значок «Подзорная труба» и выберите «HTML Visualizer».
Когда достигается точка останова, вы можете щелкнуть шпионское стекло, и в открывшемся всплывающем окне вы увидите обработанный дамп (так же, как вы видели бы его в LinqPad).
В этом примере выражение
dump.Write(new string[] { "a", "b" });
или (если вы предпочитаете другой синтаксис, используя метод расширения, упомянутый выше)
(new string[] { "a", "b" }).Dump();
визуализировано.
Обратите внимание, что
- , поскольку мы используем
dynamic
, иногда требуется явно добавить Microsoft.CSharp
к ссылкам проекта, или вы получитесообщение об ошибке.Смотрите обсуждение здесь . - , вам нужно использовать .NET Framework 4.5.2 или выше, более низкие версии фреймворка не будут работать
- , как в LinqPad, все, что вы сбросите, будетappended.
Вы должны использовать это только в модульных тестах, а не в производственном коде, потому что при развертывании приложения операторы дампа все еще там.Конечно, вы можете окружить все операторы дампа (включая оператор из шага 2. в разделе подготовки) такими #if
операторами, как:
#if DEBUG
dump.Write(new string[] { "a", "b" });
#endif
Если вы хотите привязать ссылку LinqPad только к конфигурации DEBUG, вы можете найти подсказку здесь (или более подробно там ), как этого добиться.