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

Pur*_*ome 2 .net visualizer debuggervisualizer

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

  • BinaryDataDebuggerVisualizer
  • ImageDebuggerVisualizer

图像一个正常(例如,放大玻璃出现在调试模式下),但不是字节[]一个(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
        }
     }
}
Run Code Online (Sandbox Code Playgroud)

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

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

byte[] data = File.ReadAllBytes("Chick.jpg");
Run Code Online (Sandbox Code Playgroud)

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

没有沙漏:(

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

Jar*_*Par 8

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

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

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

  • 可视化工具'Mole'的作者建议通过将可视化工具附加到'WeakReference',然后为对象新建WeakReference来解决此问题.见http://joshsmithonwpf.wordpress.com/2008/01/ (2认同)