我在我的代碼中使用了很多Linq查詢,並且正在尋找一個提供類似於LinqPad提供的格式化Dump()函數的庫。 LinqPad的Dump()擴展方法非常好,因爲它非常好地處理嵌套集合。是否有一個庫提供像LinqPad這樣的格式化Dump()函數?
理想情況下,它會以純文本格式打印出漂亮的表格,但我可以隨時吐出HTML或其他格式良好的數據。
VS的ObjectDumper示例根本不會剪切它。
我在我的代碼中使用了很多Linq查詢,並且正在尋找一個提供類似於LinqPad提供的格式化Dump()函數的庫。 LinqPad的Dump()擴展方法非常好,因爲它非常好地處理嵌套集合。是否有一個庫提供像LinqPad這樣的格式化Dump()函數?
理想情況下,它會以純文本格式打印出漂亮的表格,但我可以隨時吐出HTML或其他格式良好的數據。
VS的ObjectDumper示例根本不會剪切它。
這是我一直使用的是什麼:
Special thanks to this thread (especially Pat Kujawa's & anunay's comments)
C#(直從帕特Kujawa的評論(雖然我把它返回自身,使其連鎖店如linqpad的版本一樣)):
public static T Dump<T>(this T o) {
var localUrl = Path.GetTempFileName() + ".html";
using (var writer = LINQPad.Util.CreateXhtmlWriter(true))
{
writer.Write(o);
File.WriteAllText(localUrl, writer.ToString());
}
Process.Start(localUrl);
return o;
}
VB(我的轉換,因爲我需要它在VB應用程序):
Public Module LinqDebugging
<System.Runtime.CompilerServices.Extension()>
Public Function Dump(Of T)(ByVal o As T) As T
Dim localUrl = Path.GetTempFileName() + ".html"
Using writer = LINQPad.Util.CreateXhtmlWriter(True)
writer.Write(o)
File.WriteAllText(localUrl, writer.ToString())
End Using
Process.Start(localUrl)
Return o
End Function
End Module
您需要將linqpad可執行文件添加爲基準的項目以及System.IO
和System.Diagnostics
這將啓動顯示精確的輸出linqpad會生成默認Web瀏覽器。
爲了更方便地引用LINQPad.exe,現在有兩個AnyCPU都可以編譯框架3.5和4.0的構建:www.linqpad.net/beta.aspx – 2011-05-18 01:27:17
我不知道這個轉儲方法在你自己的代碼中的用法是否違反了直播嗎? 從[Linqpad EULA(http://www.linqpad.net/eula.txt): 用法 可在重新分發可執行與商業或非商業應用程序或庫的所述LINQPad的未修改版本允許最終用戶運行LINQPad的唯一目的。用於其他目的的再分配需要得到許可人的書面許可。 – Nikolaj 2016-03-09 10:34:25
我會建議只使用這個功能來調試問題。每當我們構建最終產品時,LINQPad在項目參考文獻中被列爲「不包含」。 – diceguyd30 2016-03-18 22:13:26
正如diceguyd30指出的那樣,您可以直接在您的代碼中直接訪問LINQPad可執行文件,並讓它生成HTML本身。如果您試圖將HTML輸出到界面作爲程序的正常執行的一部分,這將最有效。
如果您的目的是生成可在程序運行時監視的調試數據,另一個選項是使用Console.Write(object)
方法,然後將Console.Out
設置爲可以智能化格式對象的東西。例如,您可以從LINQPad引用您的可執行文件,並使用它來執行您正在調試的方法,並且LINQPad將把任何Console.WriteLine(object)
調用看作與調用object.Dump()
時相同。
可能您需要:http://msdn.microsoft.com/en-us/library/bb397968(v=vs.90).aspx – Darragh 2014-01-24 15:39:05