Я написал собственный визуализатор отладчика.Visual Studio не загружает мой визуализатор отладчика
Это, и атрибуты, находятся в их собственной сборке. В сборке нет ссылок или атрибутов, содержащих класс, который нужно отлаживать. Я хочу создать отказоустойчивую DLL, которая является необязательной для пользователей.
Класс, который я пытаюсь отлаживать, является общим.
[Serializable]
public class FinCellTable<S> : IFinCellTable, IEnumerable<List<FinCell.IFinCell>>
where S : class, FinCell.IFinHeaderCell, FinCell.IFinCell, new()
Вот визуализатор:
[assembly: System.Diagnostics.DebuggerVisualizer(
typeof(Financials.Debugging.CellTableVisualizer),
typeof(VisualizerObjectSource),
Target = typeof(Financials.Transformation.IFinCellTable),
Description = "FinCell Table Visualizer")]
[assembly: System.Diagnostics.DebuggerVisualizer(
typeof(Financials.Debugging.CellTableVisualizer),
typeof(VisualizerObjectSource),
Target = typeof(Financials.Transformation.FinCellTable<Financials.FinCell.FinHeaderCell>),
Description = "FinCell Table Visualizer")]
namespace Financials.Debugging
{
public class CellTableVisualizer : DialogDebuggerVisualizer
{
protected override void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider)
{
if (windowService == null) throw new ArgumentNullException("windowService");
if (objectProvider == null) throw new ArgumentNullException("objectProvider");
var data = (IFinCellTable)objectProvider.GetObject();
using (var displayForm = new CellTableVizForm())
{
displayForm.PopulateForm(data);
windowService.ShowDialog(displayForm);
}
}
}
}
Я бегу Visual Studio 2010, а следующий каталог содержит .dll и .pdb визуализатора Ассамблеи:
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Packages\Debugger\Visualizers
I поместите точку останова на экземпляр IFinCellTable, который специально является FinCellTable. Он не показывает увеличительное стекло.
Я отлаживал Visual Studio с помощью другой Visual Studio, поскольку первая VS была отлаживаемой. Я смотрел выходное окно как первую VS-загруженную dll. Когда я вызвал визуализатор на основе данных, второй VS вывел, что он загрузил Microsoft.VisualStudio.DebuggerVisualizers.dll и Microsoft.VisualStudio.Debugger.DataSetVisualizer.dll (последний из правильного каталога, который я сказал выше). (Окно модулей ведет себя/показывает то же самое.)
Таким образом, очевидно, что сборщик отладчика Visualizer Drop-In не загружается VS, поэтому он не знает, чтобы показать увеличительное стекло.
Как вы получаете визуальную студию для загрузки визуализаторов вверх, поэтому визуализаторы визуальных изображений работают, и вам не нужно редактировать исходный код?
Ничего не выпрыгивает. Вы * перезапустили VS после копирования визуализатора, правильно? –
Вам нужно сделать какой-то пользовательский интерфейс или перезагрузить среду?Это необходимо для надстроек в предыдущих версиях. –
Странно. Я сделал именно то, что вы здесь описали: http://www.adamjamesnaylor.com/HowToWriteADebugVisualiserInVisualStudio.aspx, и он, похоже, работал нормально. Как Мишель спрашивает, вы уверены, что это в правильной папке? Я прошу, потому что на работе моя папка пользователя Visual Studio находится на сетевом ресурсе, а VS выдает исключения безопасности при попытке доступа к общей папке. –