zoukankan      html  css  js  c++  java
  • 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后。直接丢到以下两个路径 

        VisualStudioInstallPathCommon7PackagesDebuggerVisualizers

        My DocumentsVisualStudioVersionVisualizers

    四、使用插件

        重新启动调试,在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

  • 相关阅读:
    SVN服务器搭建(一)
    排序算法二:冒泡排序
    【LeetCode】136. Single Number
    【LeetCode】217. Contains Duplicate
    【LeetCode】189. Rotate Array
    【LeetCode】122. Best Time to Buy and Sell Stock II
    【LeetCode】26. Remove Duplicates from Sorted Array
    【LeetCode】20. Valid Parentheses
    【LeetCode】680. Valid Palindrome II
    【LeetCode】345. Reverse Vowels of a String
  • 原文地址:https://www.cnblogs.com/xibei/p/10983865.html
Copyright © 2011-2022 走看看