我在VS2008中创建了一个调试器可视化工具。我在同一个.dll中创建了两个类: -
图像工作正常(例如,放大玻璃出现在调试模式下),但不是字节[] 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
上(使用断点)。
没有沙漏:(
任何人对错误都有任何想法?
答案 0 :(得分:8)
不幸的是,这是不可能的。 Debugger Visualizer框架中存在一个限制,它阻止它们在数组类型或对象上运行。
http://msdn.microsoft.com/en-us/library/e2zc529c.aspx
从页面引用:“您可以为除Object或Array之外的任何托管类的对象编写自定义可视化工具”