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

相关文章
|
2月前
|
安全 编译器 Linux
环境搭建与工具的项目创建(Microsoft Visual Studio 2022)
环境搭建与工具的项目创建(Microsoft Visual Studio 2022)
44 0
|
6月前
使用 UI5 Tools 这款 Visual Studio Code 扩展来管理和运行本地 SAP UI5 应用试读版
使用 UI5 Tools 这款 Visual Studio Code 扩展来管理和运行本地 SAP UI5 应用试读版
32 0
|
Windows
Visual Studio 2022如何创建Win32项目
Visual Studio 2022如何创建Win32项目
1126 0
Visual Studio 2022如何创建Win32项目
|
C++ Windows
【Visual Studio】Visual Studio 2019 创建 Windows 控制台程序 ( 安装 ‘使用 C++ 的桌面开发‘ 组件 | 创建并运行 Windows 控制台程序 )(二)
【Visual Studio】Visual Studio 2019 创建 Windows 控制台程序 ( 安装 ‘使用 C++ 的桌面开发‘ 组件 | 创建并运行 Windows 控制台程序 )(二)
190 0
【Visual Studio】Visual Studio 2019 创建 Windows 控制台程序 ( 安装 ‘使用 C++ 的桌面开发‘ 组件 | 创建并运行 Windows 控制台程序 )(二)
|
C++ Windows
【Visual Studio】Visual Studio 2019 创建 Windows 控制台程序 ( 安装 ‘使用 C++ 的桌面开发‘ 组件 | 创建并运行 Windows 控制台程序 )(一)
【Visual Studio】Visual Studio 2019 创建 Windows 控制台程序 ( 安装 ‘使用 C++ 的桌面开发‘ 组件 | 创建并运行 Windows 控制台程序 )(一)
350 0
【Visual Studio】Visual Studio 2019 创建 Windows 控制台程序 ( 安装 ‘使用 C++ 的桌面开发‘ 组件 | 创建并运行 Windows 控制台程序 )(一)
|
C++ Windows
【OpenGL】一、Visual Studio 2019 创建 Windows 桌面程序 ( Visual Studio Installer 安装 C++ 桌面开发库 | 创建桌面程序 )
【OpenGL】一、Visual Studio 2019 创建 Windows 桌面程序 ( Visual Studio Installer 安装 C++ 桌面开发库 | 创建桌面程序 )
531 0
【OpenGL】一、Visual Studio 2019 创建 Windows 桌面程序 ( Visual Studio Installer 安装 C++ 桌面开发库 | 创建桌面程序 )
|
安全 IDE 小程序
QT应用编程: Visual Studio里编写activex控件在网页中运行(dll插件形式)
QT应用编程: Visual Studio里编写activex控件在网页中运行(dll插件形式)
204 0
QT应用编程: Visual Studio里编写activex控件在网页中运行(dll插件形式)
|
编译器 C语言 Windows
QT应用编程: windows下调用福熙阅读器COM插件完成PDF开发
QT应用编程: windows下调用福熙阅读器COM插件完成PDF开发
225 0
QT应用编程: windows下调用福熙阅读器COM插件完成PDF开发
|
BI C#
Visual Studio 2017报表RDLC设计器与工具箱中Report Viewer问题
原文:VS2017入门 RDLC入门之01 本系列所有内容为网络收集转载,版权为原作者所有。 VS2017初始安装后和VS2015一样,都没有ReportDesigner/ReportViewer ReportViewer 1.
6508 0

热门文章

最新文章