• 自定义可视化调试工具(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 XXXCommon7PackagesDebuggerVisualizers

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

    4:源码下载及说明

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

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

    引用:  http://www.cnblogs.com/cyq1162/p/4551652.html

    资料: http://www.cnblogs.com/itelite/p/3182941.html

  • 相关阅读:
    Oracle DataGuard搭建(二)
    Oracle DataGuard搭建(一)
    Linux 安装oracle10g 配置dataguard 介绍和步骤
    Oracle DataGuard数据备份方案详解
    汽车行业的DMS系统 IT不变应万变
    汽车行业DMS系统介绍
    详解UML中的聚合,关联,泛化等关系
    ASP.NET将Session保存到数据库中
    C#快捷键
    Asp.net中使用资源文件实现网站多语言
  • 原文地址:https://www.cnblogs.com/chencidi/p/4929993.html
Copyright © 2020-2023  润新知