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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM