VisualStudio自定義調試工具(GIS)

閒言    

    偶爾分享技術,對,這次就是偶爾,幾年一次(技術自卑)。上週末竟然有人催更,也是受寵...若驚。以後會主動定期更的,可能。

 

前言   

    Visual Studio 調試器自帶很多調試工具,調試時斷點光標在類型上,會發現有放大鏡圖標的,就可以進行可視化查看該類型。常見的有文本可視化工具、HTML 可視化工具、XML 可視化工具和數據集可視化工具。有時候需要調試查看特定類型時,就需要定製調試工具。比如調試時查看Image,查看自定義表格數據,GIS開發調試時查看幾何圖形等

 

    關鍵小點

    1.Microsoft.VisualStudio.DebuggerVisualizers.dll類庫。在引用管理器中擴展中可以找到

    2.IGeometry和String之間轉換(爲啥要轉?IGeometry不支持序列化,在調試工具宿主到VS調試進程中時,無法將IGeometry對象序列化傳遞給調試工具,也是迫不得已轉成string,調試時需要多加兩行代碼轉成string才能調動調試工具,也是有點繁瑣,大佬們有什麼建議,留言砸我)

    3.GDI繪製IGeometry(爲啥不用Map直接承接圖形顯示?試過才知道,ActiveX控件無法在非單線程單元初始化,所以算了,還是用最基礎的GDI繪製)

 

    文末有參考鏈接和domo下載

 

    和所有插件開發流程一樣:製作插件-調試插件-安裝插件-使用

 

一、製作插件

    1.新建類庫項目,引入必要Microsoft.VisualStudio.DebuggerVisualizers.dll類庫

    2.新建可視化的類。繼承自DialogDebuggerVisualizer。重寫Show方法。你也可以在模板中選擇調試工具更方便

public class ESRIGeometryVisualizer : DialogDebuggerVisualizer
{
     override protected void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider)
        {
            byte[] wkb = Convert.FromBase64String(objectProvider.GetObject().ToString());
            FormShowCustom frm = new FormShowCustom();
            frm.OriginWkb = wkb;
            windowService.ShowDialog(frm);
        }
​
        public static void TestESRIGeometryVisualizer(object objectToVisualize)
        {
            VisualizerDevelopmentHost visualizerHost = new VisualizerDevelopmentHost(objectToVisualize, typeof(ESRIGeometryVisualizer));
            visualizerHost.ShowVisualizer();
        }
    }

  

    3.命名空間上面需要添加一下特性代碼用於調試時識別

[assembly: System.Diagnostics.DebuggerVisualizer(
typeof(GeometryVisualizer.ESRIGeometryVisualizer),
typeof(VisualizerObjectSource),
Target = typeof(string),
Description = "ESRIGeometry可視化工具")]

 

 

    4.創建一個窗體用於顯示IGeometry。(demo中可見具體算法,利用GDI繪製IGeometry)

 

二、調試插件

    demo中創建個簡單控制檯應用程序用於調試。如果你是VS2012、ArcGIS10.2環境可以直接運行

 

三、安裝插件

        編譯成dll後。直接丟到以下兩個路徑 

    VisualStudioInstallPath\Common7\Packages\Debugger\Visualizers

    My Documents\VisualStudioVersion\Visualizers

 

四、使用插件

    重新啓動調試,在IGeometry類型處,將其轉換爲string後。光標在類型上會發現放大鏡中已經增加了ESRIGeometry可視化工具選項。

 

 

最後顯示結果就是下面這樣

 

 

最令人不舒服的就是調試時,需要多加兩行代碼轉成string。相信開源的世界應該會更好點。

IGeometryFactory3 factory = new GeometryEnvironment() as IGeometryFactory3;byte[] b = factory.CreateWkbVariantFromGeometry(pGeo) as byte[];string str = Convert.ToBase64String(b);

 

碎語

    僅提供一個調試可視化工具的開發流程,實際可以根據不同的待可視化類型進行定製。比如有基礎平臺框架的,底層通用類,且有很多開發人員使用,可以針對需要可視化調試的類進行定製。XML自定義可視化顯示、圖像顯示、流程顯示、一些圖形算法過程等

 

參考鏈接

https://www.cnblogs.com/cyq1162/p/4551652.html

https://docs.microsoft.com/en-us/visualstudio/debugger

demo源碼下載  提取碼 buti

失效請聯繫,微信關注瞭解更多

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章