在网站中使用 LINQPAD

Use LINQPAD in a website

我正在使用来自 nuget 的 LINQPad 包:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="LINQPad" version="4.51.3" targetFramework="net40" />
</packages>

在控制台应用程序中 (FW4.0)

使用这个简单的代码:

public static class A
 {
  public static string Dump<T>(this T o)
   {

    var sb = new StringBuilder();
    using (TextWriter writer = LINQPad.Util.CreateXhtmlWriter(true))
    {
        writer.Write(o);
        sb.Append(writer);
    }
    return sb.ToString();

   }
  }

    class Program
    {
        static void Main(string[] args)
        {
            var s = A.Dump(Enumerable.Range(1, 5));
            Console.WriteLine(s);

        }
    }

如您所见,我确实看到了 HTML 字符串:

但是 - 如果我创建一个空网站(不是网络项目,我有一个现有网站)并添加 nuget 包 - 相同的包,相同的 FW4.0 - 我收到错误:

值得一提的是 exe 在 Bin 中:

问题

为什么会这样,我错过了什么?

好吧,我最终弄清楚了怎么做,希望它能帮助其他人。

我有这个:

WebSite
  |
  +--- bin
        |
        +---all dlls, EXE

所以我创建了一个新的 Class 库项目 ----> Nuget---> 下载了 LINQPAD 包。

然后在我网站的 BIN 文件夹中,我复制了 LINQPAD.EXE 文件(这是强制性的,否则它不起作用)- 就是这样。

我在网站上引用了 DLL。

在那个 DLL 中我使用了这个扩展方法:

   public static class A
   {

    public static string Dump<T>(this T o)
    {

        var sb = new StringBuilder();
        using (TextWriter writer = LINQPad.Util.CreateXhtmlWriter(true))
        {
            writer.Write(o);
            sb.Append(writer);
        }
        return sb.ToString();

    }
}

现在我可以调用 string st = dt.Dump() 并且 HTML 是真正的 DUMP 作为 LINQPAD 的输出。

演示:在我的站点中,我为某些服务创建了一个测试页面并检查响应,我转储对象,获取 HTML 并将其注入 IFRAME: