Визуализатор отладчика не работает? Я неправильно зарегистрировал это? - PullRequest
2 голосов
/ 06 декабря 2008

Я создал визуализатор отладчика в VS2008. Я создал два класса в одном и том же .dll: -

  • BinaryDataDebuggerVisualizer
  • ImageDebuggerVisualizer

Изображение, которое работает нормально (например, увеличительное стекло появляется в режиме отладки), но не для байта [] (BinaryDataDV). Мой визуализатор отображает двоичные данные в виде изображения в модальном окне (если данные являются допустимым изображением). Я скомпилировал код в режиме Release, затем бросил .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 Ответ

8 голосов
/ 06 декабря 2008

К сожалению, это невозможно. В структуре Debugger Visualizer есть ограничение, которое не позволяет им работать с типами массивов или объектами.

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

Цитата со страницы: «Вы можете написать собственный визуализатор для объекта любого управляемого класса, кроме Object или Array»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...