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
VisualStudio自定义调试工具(GIS)的更多相关文章
- 几篇关于VisualStudio的调试工具文章
现代的软件变得日益复杂,强大的调试功能也变得日益重要起来.在VisualStudio的最近几个版本中,在调试工具方面也是增强了不少的,本文转录了几个微软官方介绍的一些新增的调试功能的文章,如果能很好的 ...
- VisualStudio 自定义外部命令
通过自定义命令,可以在 VisualStudio 加上一些自定义命令,可以快速启动 git 或者做其他的事情 添加命令 首先打开工具 外部命令,点击添加,然后在弹出的窗口输入下面内容 例如添加内容是打 ...
- Metalama简介5.配合VisualStudio自定义重构或快速操作功能
使用基于Roslyn的编译时AOP框架来解决.NET项目的代码复用问题 Metalama简介1. 不止是一个.NET跨平台的编译时AOP框架 Metalama简介2.利用Aspect在编译时进行消除重 ...
- VisualStudio自定义代码段_方法一
在VisualStudio里,使用代码段会提高我们的编写速度.其实,就是给一段代码加个快捷方式,使用时,快捷方式按键+2次Tab键. 举个例子: 比如输入Console.WriteLine (); 传 ...
- VisualStudio自定义代码段_方法二
1.在项目中新增一个xml文件为vcoo.snippet,然后右键“插入代码段”,选择Snippet即可: 2.修改代码片段内容后保存: 3.VS菜单中选择“工具”-“代码段管理器”导入这个snipp ...
- InnoSetup 以命令行自动编译打包
本章介绍,在新建Innosetup的编译脚本iss文件后,在不运行Innosetup软件的基础上,以bat自动编译运行打包. 一.添加Innosetup软件包 下载InnoSetup软件包并解压到bu ...
- dotnet 从入门到放弃的 500 篇文章合集
本文是记录我从入门到放弃写的博客 博客包括 C#.WPF.UWP.dotnet core .git 和 VisualStudio 和一些算法,所有博客使用 docx 保存 下载:dotnet 从入门到 ...
- 2018-8-10-dotnet-从入门到放弃的-500-篇文章合集
title author date CreateTime categories dotnet 从入门到放弃的 500 篇文章合集 lindexi 2018-08-10 19:16:52 +0800 2 ...
- 2018-8-10-VisualStudio-自定义外部命令
title author date CreateTime categories VisualStudio 自定义外部命令 lindexi 2018-08-10 19:16:53 +0800 2018- ...
随机推荐
- SpringBoot第二十四篇:应用监控之Admin
作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/11457867.html 版权声明:本文为博主原创文章,转载请附上博文链接! 引言 前一章(S ...
- CF803G - Periodic RMQ Problem 动态开点线段树 或 离线
CF 题意 有一个长度为n × k (<=1E9)的数组,有区间修改和区间查询最小值的操作. 思路 由于数组过大,直接做显然不行. 有两种做法,可以用动态开点版本的线段树,或者离线搞(还没搞)( ...
- CodeForces Round #514 (div2)
A:Cashier 题意:问可以休息多少次. 代码: #include<bits/stdc++.h> using namespace std; #define Fopen freopen( ...
- PAT 天梯杯 L2-024 部落 dfs,连通块
L2-024. 部落 时间限制 120 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 在一个社区里,每个人都有自己的小圈子,还可能同时属于很多不 ...
- ubantu下配置共享文件
原文转自 http://blog.chinaunix.net/uid-25305993-id-3754109.html 一 samba的安装: sudo apt-get install samba ...
- 使用Elastic APM监控你的.NET Core应用
作者:Jax 前言 在应用实际的运维过程中,我们需要更多的日志和监控来让我们对自己的应用程序的运行状况有一个全方位的了解.然而对于大部分开发者而言,平时大家所关注的更多的是如何更优雅的实现业务,或者是 ...
- Zabbix4.2对IIS监控摸索记录
Zabbix是很强大,但是相关的细节技术文档貌似很少,摸索之路就显得异常难. 度娘搜了下,关于Zabbix对IIS的监控资料确实有,确实也讲如何操作了,但是细细按照对方的要求操作下,总是缺数据,no ...
- linux下使用yum安装新版php7.0
这两天又装了一下虚拟机,又要编译lnmp,还要弄各种拓展,很麻烦,能不能直接yum安装呢?答案是可以的! 1.首先要更新yum源,不然是默认的老版本,一般都在5.6及以下,但是php7都出来好久了,性 ...
- JAVASSM框架面试题
1.SpringMVC的工作流程? 1. 用户发送请求至前端控制器DispatcherServlet 2. DispatcherServlet收到请求调用HandlerMapping处理器映射器. 3 ...
- Admiral(双向BFS + Hash)
Problem Description Suppose that you are an admiral of a famous naval troop. Our naval forces have g ...