1. 程式人生 > >釋出:.NET開發人員必備的視覺化除錯工具(你值的擁有)

釋出:.NET開發人員必備的視覺化除錯工具(你值的擁有)

1:如何使用

1:點選下載:.NET視覺化除錯工具 (更新於2016-12-29 19:11:00)

(終於徹底相容了部分VS環境下無法使用的問題)

2:解壓RAR後執行:CYQ.VisualierSetup.exe 成功後關掉提示視窗即可。

PS:一次執行,支援各個VS版本,終身提高除錯的效率,而且沒任何副作用。

2:開源及後續升級地址:

舊地址:http://code.taobao.org/svn/cyqopen/trunk/CYQ.Visualizer/

3:功能介紹

 1:支援字串的Json轉表格檢視:

2:支援NameValueCollection(Request.Form、Request.QueryString)、HttpCookieCollection(Request.Cookies) 表格檢視

Cookies:

Request.Form、Request.QueryString

3:其它的就不截圖,同時還支援以下型別:

1:System.Drawing.Image:(這個轉圖片檢視)

2:MDataTable系列:表、行、列、結構

3:DataTable系列:表、行、列、結構

4:泛型系列:Dictionary<,>、LinkedList<>、List<>、Queue<>、SortedDictionary<,>、SortedList<,>、Stack<>

5:非泛型系列:ArrayList、Hashtable、Queue、SortedList、Stack

6:其它繼承自:Enumerable 介面的型別:(型別太多,未來得及一一測試)

BitArray、ReadOnlyCollectionBase、HybridDictionary、ListDictionary、StringCollection、StringDictionary、BaseCollection等

4:研究過程

關於視覺化除錯這一塊內容,網上一搜,相關的資訊全部是我自己以前發過的文章,悲催就一個字。。。。

看來沒啥人研究這一塊,好在蒼天不負有心人,還是被我突圍了。。。。。

能出來這麼簡易的工具,經歷的過程是:

2:收集了不同的VS版本的DLL(Microsoft.VisualStudio.DebuggerVisualizers.dll)。

4:想到了複製多個專案檔案來實現多個VS版本編繹(如果想不到這個,估計也不會折騰):

5:解決了系列化問題(才能大規模的支援各種型別):

預設情況下,不支援系列化的類是不支援視覺化的,因此,想支援DataRow檢視都不行,會直接拋異常。

為了解決這一問題,進行了網際網路搜尋(相關資訊,國內基本是我自己的文章,國外好不容易搜到一篇)。

通過研究,終於解決了這一難題:

 public class EnumerableVisualizerObjectSource : VisualizerObjectSource
    {
        public override void GetData(object target, System.IO.Stream outgoingData)
        {
            if (target is NameObjectCollectionBase)
            {
                target = MDataTable.CreateFrom(target as NameObjectCollectionBase);
            }
            else
            {
                target = MDataTable.CreateFrom(target as IEnumerable);
            }
            base.GetData(target, outgoingData);

        }
    }

自定義資料來源,在設定資料來源時,把物件轉換成MDataTable,再由MDataTable去系列過去。

6:MDataTable要支援和大量型別的轉換工作(這些年的工作已經完成了不少,只需要再補全即可)。

總結:

上一篇文章釋出的時候,有網友還看不懂是用來幹什麼,一個唉~~~字了了。

這一次,在集滿了所有的條件之下,花了一天的研究時間,直接寫成了工具分享給你。

而你只要下載,再輕輕雙擊一下,就得能得良好的除錯體驗!

在你開發除錯的過程中,可以很輕鬆的檢視變數的所有資料!!!

媽媽再也不用擔心你的除錯能力了~~~

不要問我理由~~~我不是雷鋒塔下的雷~~~