LINQPad в Visual Studio

public static class Extensions{
public static void Dump<T>(this T o) { }
public static void Dump<T>(this T o, string s) { }}

Эти строки позволяют мне копировать код из LINQPad в VS и запускать его, не комментируя каждую строку с помощью.Dump(), но этого недостаточно... http://code.google.com/p/linqpadvisualizer/ - не очень удобно:(

Лучший результат, который я получаю при поиске LINQPad в VS, - это сайт с кодом, приведенным ниже, от Pat Kujawa.

using System.Diagnostics;
using System.IO;
public static class Extensions
{
public static void Dump<T>(this T o)
{
    string localUrl = Path.GetTempFileName() + ".html";
    using (var writer = LINQPad.Util.CreateXhtmlWriter(true))
    {
        writer.Write(o);
        File.WriteAllText(localUrl, writer.ToString());
    }
    Process.Start(localUrl);
}
}

но Ошибка 1 Имя 'LINQPad' не существует в текущем контексте

Я не мог найти LINQPad.dll в сети

3 ответа

Решение

Это не dll для LINQPad, на которую нужно ссылаться, а сам LINQPad.exe.

Щелкните правой кнопкой мыши свой проект в Visual Studio -> Добавить ссылку -> Найдите расположение исполняемого двоичного файла, обычно находящегося в каталоге установки. C:\Program Files\LINQPad\ -> выбрать LINQPad.exe,

После этого вы можете добавить в свой файл "директиву using":

using System.Diagnostics;
using System.IO;
using LINQPad;

Метод LINQPad.Util.CreateXhtmlWriter теперь будет доступен для использования.

В дополнение к ответам, приведенным выше, я нашел простое решение для отладки "на месте" в Visual Studio (2015).


подготовка

  1. Как писал Рэй Вега, добавьте ссылку на версию x86 (помните, что Visual Studio по-прежнему не является 64-битной!) Из LinqPad (т.е. Добавить ссылку -> Перейдите к расположению исполняемого двоичного файла exe, обычно находящемуся в его каталоге установки C:\Program Files\LINQPad\ -> выберите LINQPad.exe.)

  2. В области, где вы хотите использовать дамп, добавьте:

    public static dynamic dump = LINQPad.Util.CreateXhtmlWriter();
    
  3. Чтобы создать дамп, добавьте к своему коду, где вам требуется дамп:

    dump.Write(obj); // obj = the object to dump
    
  4. Добавьте точки останова, где это необходимо.

Примечание. Если вам требуется совместимость с методом 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()

Нажмите на значок Spyglass и выберите "HTML Visualizer". HtmlVisualizer

Когда достигается точка останова, вы можете нажать на spyglass и в открывшемся всплывающем окне вы можете увидеть обработанный дамп (так же, как вы видели бы его в LinqPad).

DumpExample

В этом примере выражение

        dump.Write(new string[] { "a", "b" });

или (если вы предпочитаете другой синтаксис, используя метод расширения, упомянутый выше)

        (new string[] { "a", "b" }).Dump();

было оказано.

Обратите внимание, что

  • потому что мы используем dynamicиногда требуется явно добавить Microsoft.CSharp на ссылки проекта или вы получите сообщение об ошибке. Смотрите обсуждение здесь.
  • вам нужно использовать.NET Framework 4.5.2 или выше, более низкие версии фреймворка не будут работать
  • как и в LinqPad, все, что вы сбросите, будет добавлено.
  • Вы должны использовать это только в модульных тестах, а не в рабочем коде, потому что при развертывании вашего приложения операторы дампа все еще там. Конечно, вы можете окружить все операторы дампа (включая оператор из шага 2. в разделе подготовки) #if заявления как:

    #if DEBUGdump.Write(new string[] { "a", "b" });#endif

    Если вы хотите привязать ссылку LinqPad только к конфигурации DEBUG, вы можете найти подсказку здесь (или более подробно там), как этого добиться.

Рекомендуйте использовать пакет nuget, связанный с LINQPad, тогда вы можете использовать  Dump()метод с ним.

Для ядра .NET:

  • Установите LINQPad.Runtime

Для .NET framework 4 и т.д.

  • Установите LINQPad
Другие вопросы по тегам