调试器Visualizer无法正常工作?我错误地注册了吗?

时间:2008-12-06 10:09:31

标签: .net visualizer debuggervisualizer

我在VS2008中创建了一个调试器可视化工具。我在同一个.dll中创建了两个类: -

  • BinaryDataDebuggerVisualizer
  • ImageDebuggerVisualizer

图像工作正常(例如,放大玻璃出现在调试模式下),但不是字节[] 1(BinaryDataDV)。我的可视化工具所做的是将二进制数据显示为模态窗口中的图像(如果数据是合法图像)。我在发布模式下编译为代码,然后将.dll删除到C:\ Users \\ Documents \ Visual Studio 2008 \ Visualizers

这是我用来“定义”vis ...

的代码

使用

System;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using Microsoft.VisualStudio.DebuggerVisualizers;
using Foo.DebuggerVisualizers;  

[assembly: DebuggerVisualizer(
    typeof (BinaryDataDebuggerVisualizer),
    typeof (VisualizerObjectSource),
    Target = typeof (byte[]),
    Description = "Binary Data to Image Visualizer")]

namespace Foo.DebuggerVisualizers
{
    public class BinaryDataDebuggerVisualizer : DialogDebuggerVisualizer
    {
        protected override void Show(IDialogVisualizerService windowService,
           IVisualizerObjectProvider objectProvider)
        {
            ... my code in here
        }
     }
}

我在调试器可视化器解决方案中进行了单元测试,该解决方案启动并测试代码..它正确显示了合法(也非法)的图像文件。所以我相信代码还可以。

当我在我真正的解决方案中时,这就是我正在做的事情(当我在调试模式中将鼠标悬停在变量上时,我希望放大玻璃显示出来。)

byte[] data = File.ReadAllBytes("Chick.jpg");

然后当我在调试时暂停代码时,我将鼠标悬停在变量data上(使用断点)。

没有沙漏:(

任何人对错误都有任何想法?

1 个答案:

答案 0 :(得分:8)

不幸的是,这是不可能的。 Debugger Visualizer框架中存在一个限制,它阻止它们在数组类型或对象上运行。

http://msdn.microsoft.com/en-us/library/e2zc529c.aspx

从页面引用:“您可以为除Object或Array之外的任何托管类的对象编写自定义可视化工具”