我在 VS2008 中创建了一个调试器可视化工具。我在同一个 .dll 中创建了两个类:-
- BinaryDataDebuggerVisualizer
- ImageDebuggerVisualizer
图像一个工作正常(例如,放大镜出现在调试模式下)但不适用于 byte[] 一个(BinaryDataDV)。我的可视化工具所做的是将二进制数据显示为模式窗口中的图像(如果数据是合法图像)。我在发布模式下编译为代码,然后将 .dll 放入 C:\Users\\Documents\Visual Studio 2008\Visualizers
这是我用来“定义”视觉的代码...
使用
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
然后,当我在调试时暂停代码时,我将鼠标悬停在该变量上(使用断点)。
没有沙漏:(
任何人对什么是错的有任何想法?