开发者社区> 晚来风急> 正文

自定义可视化调试工具(Microsoft.VisualStudio.DebuggerVisualizers)

简介:
+关注继续查看

前言: 

最近飞机失联的太多,明天要飞北京处理服务器双机热备的问题,航空保险已买,单号是:TF10122913。 

至于我的银行卡密码,在我枕头下面的字条里,要是我之后没再更新文章,请通知我家人,哈哈哈哈。

好了,Joke 被 Play 后,下面 Enter 正文。 

背景:

话说:使用CYQ.Data时,会经常断点MDataTable的对象,为了查看表格的数据内容,在监视里会常ToDataTable(),然后借可DataTable的可视化方式查看表格。

近日:心中莫名就来了一句话,不转行不行?狠想直接看MDataTable的对象,Like This:

 

于是经过一翻小研究,就有了下面的内容。

 

1:什么是:可视化调试工具(Microsoft.VisualStudio.DebuggerVisualizers)

用文字描述显的太无力,我直接上图,很直观:

A:对字符串的可视化调试展示: 

 

B:对DataSet、DataTable系列的可视化展示:

 

如上图,简单一句话总结一下就是:对指定某种类型的可视化插件展示。 

 

2:怎么实现:可视化调试工具(Microsoft.VisualStudio.DebuggerVisualizers) 

不说你以为很复杂,一说其实简单的要命,这里对图片System.Draw.Image进行示例,最终效果如下图:

 

下面跟着我一起来:

步骤一:新建个项目=》类库=》添加一个类。
步骤二:引用:Microsoft.VisualStudio.DebuggerVisualizers 
步骤三:输入以下代码:

复制代码
using Microsoft.VisualStudio.DebuggerVisualizers;
using System;
using System.Drawing;
using System.Windows.Forms;

[assembly: System.Diagnostics.DebuggerVisualizer(
typeof(CYQ.Visualizer.ImageVisualizer),
typeof(VisualizerObjectSource),
Target = typeof(System.Drawing.Image),
Description = "Image Visualizer")]
namespace CYQ.Visualizer
{
    public class ImageVisualizer : DialogDebuggerVisualizer
    {
        override protected void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider)
        {
            Image image = (Image)objectProvider.GetObject();

            Form form = new Form();
            form.Text = string.Format("Width: {0}, Height: {1}", image.Width, image.Height);
            form.ClientSize = new Size(image.Width, image.Height);
            form.FormBorderStyle = FormBorderStyle.FixedToolWindow;

            PictureBox pictureBox = new PictureBox();
            pictureBox.Image = image;
            pictureBox.Parent = form;
            pictureBox.Dock = DockStyle.Fill;

            windowService.ShowDialog(form);
        }
     }
  }
复制代码

然后编绎成功后变成一个Xxx.dll,就OK了。

 

简单的说明一下代码流程:

1:新建一个类,叫XXXX,需要继承自:DialogDebuggerVisualizer
2:重写方法Show(有两个参数)
3:代码里,第一行:objectProvider.GetObject() 返回你要处理的类的实体的拷贝,你进行一下类型转换就可以了。
这里说明一下,要处理的必须是序列化的。
4:最后一行: windowService.ShowDialog(控件);就是展示呈现一个控件了,通常我们用Form来显示。
5:中间那一块,就是我们自定要的呈现了,自己要写的东西也就是这些了,学点Winform知识你就会了。
6:最后一步,指定要被插件反射用的程序集信息: 上面有三个typeof
第一个typeof(就是那个XXXX类) 第二个typeof(按示例不用管,除非你需要自定义自己的序列化) 第三个typeof(你要可视化呈现的类) 

3:如何部署:可视化调试工具(Microsoft.VisualStudio.DebuggerVisualizers)

 一句话,把那个Xxx.dll放到以下目录:VS安装目录\Microsoft Visual Studio XXX\Common7\Packages\Debugger\Visualizers

 然后就自动生效了,当你调试时,会被加载,进而呈现你的那个效果。

4:源码下载及说明

 对于不同的VS(2005、2008、2012、2015),你需要编绎不同的版本,主要是引用的:Microsoft.VisualStudio.DebuggerVisualizers 这个版本不一样。

 下载地址:CYQ.Visualizer.rar 下载


本文原创发表于博客园,作者为路过秋天,原文链接:http://www.cnblogs.com/cyq1162/p/4551652.html

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
更优的工具,更方便的语言,使用HaaS Studio开发Python轻应用
HaaS IDE 迎来大升级。新的HaaS Studio 集 C / JS / Python 三种语言开发于一体,实现了一个插件完成三种应用开发的功能。这里我们重点介绍一下 Python 轻应用操作。
85 0
PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题
安装这个扩展是由于Zephir 编译不能始终通过,迫不得已啊,使用Zephir写扩展,总是出现以下错误: www@ubuntu1:~/phalcon-zephir/$ sudo zephir build Segmentation fault (core dumped) 去官方问问,由于php c...
1639 0
MaxCompute Studio使用心得系列6——一个工具完成整个Python UDF开发
2017/12/20 北京云栖大会上阿里云MaxCompute发布了最新的功能Python UDF,万众期待的功能终于支持啦,我怎么能不一试为快,今天就分享如何通过Studio进行Python udf开发。
7054 0
Android 自定义Toast,并且勘误Android工具类里面的ToastUtils
前言 相信大部分仁兄在使用系统Toast的时候,都感觉不太尽如人意,因为系统Toast显示的位置比较固定,并且字体颜色等会跟随系统版本变化,那么能不能自己写一个呢,答案是当然的。
1084 0
阿里云AIoT低代码开发工具IoT Studio用户数已经突破10万!
IoT Studio面向各个行业提供场景化解决方案模板,企业可以直接利用现有的解决方案模版来开发自己的业务
1392 0
IOT Studio Web可视化开发与调用业务逻辑API测试
测试iot studio的web可视化开发和业务逻辑功能
1151 0
自定义搜索控件
Search Box Master the Art of Search with this Custom Control that Provides the Ability to Search Y...
698 0
Qt编写数据可视化大屏界面电子看板11-自定义控件
一、前言 说到自定义控件,我是感觉特别熟悉的几个字,本人亲自原创的自定义控件超过110个,都是来自各个行业的具体应用真实需求,而不是凭空捏造的,当然有几个小控件也有点凑数的嫌疑,在编写整个数据可视化大屏界面电子看板系统中,也用到了四五个自定义的控件,比如那个环形百分比图,多态进度条,合格率仪表盘,速度仪表盘等,这些控件在现有的类中是没有的,需要用QPainter这个牛逼的工具来绘制,类似于神笔马良似的,给我一个画笔,可以画出任意你想要的图形,好比我常说的心中有坐标,万物皆painter。
1177 0
一站式开发工具HaaS Studio使用说明
为了让 HaaS 开发更加“易上手”,阿里云IoT团队推出了全新的“一站式”集成开发环境HaaS Studio。HaaS Studio 是一款基于VS Code的插件,是HaaS官方的集成开发环境。
348 0
+关注
9364
文章
243
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载