Недавно я написал специальный визуализатор отладчика для Visual Studio 2008 для одного из пользовательских типов в моем приложении. Пользовательский интерфейс для визуализатора написан в WPF и размещен на хосте элемента и показан с использованием объекта windowService IDialogVisualizerService.
Все отлично работает, и мой визуализатор загружает и показывает соответствующую информацию, но если после загрузки визуализатора попытаться «отредактировать и продолжить» в моем приложении, Visual Studio вылетает без полезного сообщения об ошибке.
Пытаясь отладить это, я удалил почти весь мой код из решения до того момента, когда я только сериализировал строку с ObjectSource и отображал только пустой элемент host, и я все еще получаю сбой при редактировании и продолжаю. Если я удаляю элемент host и показываю элемент управления WinForms или форму, это не приводит к сбою.
Вот код визуализатора:
using System;
using System.Drawing;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Windows.Forms;
using System.Windows.Forms.Integration;
using Microsoft.VisualStudio.DebuggerVisualizers;
using ObjectVisualizerShared;
using ObjectVisualizerUI;
namespace ObjectVisualizer
{
public class Visualizer : DialogDebuggerVisualizer
{
protected override void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider)
{
try
{
Stream stream = objectProvider.GetData();
if (stream.Length > 0)
{
BinaryFormatter formatter = new BinaryFormatter();
VisualizerNode node = (VisualizerNode)formatter.Deserialize(stream);
if (node != null)
{
VisualizerWindow window = new VisualizerWindow(node);
ElementHost host = new ElementHost();
host.Child = window;
host.Dock = DockStyle.Fill;
host.Size = new Size(800, 600);
windowService.ShowDialog(host);
}
}
}
catch (Exception ex)
{
MessageBox.Show(string.Format("Error!\n{0}", ex), "Object Visualizer");
}
}
}
}
Есть идеи?