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

  • 相关阅读:
    php无限极分类
    HDU 1176 免费馅饼 (类似数字三角形的题,很经典,值得仔细理解的dp思维)
    HDU 1158(非常好的锻炼DP思维的题目,非常经典)
    HDU 1165 公式推导题
    HDU 1069 Monkey and Banana(转换成LIS,做法很值得学习)
    HDU 1059(多重背包加二进制优化)
    HDU 1058(打表)
    oracle11g之管理oracle数据库笔记(理论基础知识)
    oracle11g之Oracle体系结构(理论基础知识)
    HDU 1025 LIS二分优化
  • 原文地址:https://www.cnblogs.com/xibei/p/10983865.html
Copyright © 2011-2022 走看看