zoukankan      html  css  js  c++  java
  • 自定义可视化调试工具(Microsoft.VisualStudio.DebuggerVisualizers)vs.net开发工具

    背景:

    话说:使用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 下载

  • 相关阅读:
    Codeforces Beta Round #92 (Div. 2 Only) B. Permutations 模拟
    POJ 3281 Dining 最大流 Dinic算法
    POJ 2441 Arrange the BUlls 状压DP
    URAL 1152 Faise Mirrors 状压DP 简单题
    URAL 1039 Anniversary Party 树形DP 水题
    URAL 1018 Binary Apple Tree 树形DP 好题 经典
    pytorch中的forward前向传播机制
    .data()与.detach()的区别
    Argparse模块
    pytorch代码调试工具
  • 原文地址:https://www.cnblogs.com/webenh/p/5823271.html
Copyright © 2011-2022 走看看