Пошаговое руководство. Написание визуализатора на Visual Basic
Внимание
Начиная с Visual Studio 2022 версии 17.9 визуализаторы теперь могут быть написаны в .NET 6.0+ с использованием новой модели VisualStudio.Extensibility. Мы рекомендуем авторам визуализаторов ссылаться на новую документацию по созданию визуализаторов отладчика Visual Studio, если они не хотят поддерживать более старые версии Visual Studio или не хотите отправлять пользовательские визуализаторы в составе библиотеки DLL.
В данном пошаговом руководстве показано, как написать простой визуализатор, используя Visual Basic. Визуализатор, который будет создан в данном пошаговом руководстве, отображает содержимое строки с помощью окна сообщения Windows Forms. Этот строковый визуализатор – простой пример, на основе которого можно создавать визуализаторы для других типов данных, более подходящих для ваших проектов.
Примечание.
Отображаемые диалоговые окна и команды меню могут отличаться от описанных в справке в зависимости от действующих параметров или выпуска среды. Чтобы изменить параметры, в меню Сервис выберите команду Импорт и экспорт. Дополнительные сведения см. в разделе Сброс параметров.
Код визуализатора должен быть помещен в библиотеку DLL, которая будет использоваться отладчиком. Первым шагом является создание проекта библиотеки классов для библиотеки DLL.
Создание и подготовка проекта библиотеки классов
Создание проекта библиотеки классов
Создайте новый проект библиотеки классов.
Нажмите клавишу ESC, чтобы закрыть окно запуска. Нажмите CTRL + Q, чтобы открыть поле поиска, введите visual basic, выберите Шаблоны и затем Create new Class Library (.NET Framework) (Создание библиотеки классов — .NET Framework). В появившемся диалоговом окне выберите Создать.
Введите соответствующее имя для библиотеки класса, например
MyFirstVisualizer
, а затем нажмите Создать или ОК.После создания библиотеки классов необходимо добавить ссылку на библиотеку Microsoft.VisualStudio.DebuggerVisualizers.DLL, чтобы иметь возможность использовать определенные там классы. Но сначала следует присвоить проекту понятное имя.
Переименование Class1.vb и добавление Microsoft.VisualStudio.DebuggerVisualizers
В обозревателе решений щелкните правой кнопкой мыши на Class1.vb и в контекстном меню выберите команду Переименовать.
Измените имя с Class1.vb на что-нибудь более осмысленное, например DebuggerSide.vb.
Примечание.
Visual Studio автоматически изменит объявление класса в DebuggerSide.vb согласно новому имени файла.
В обозревателе решений щелкните правой кнопкой мыши My First Visualizer и в контекстном меню выберите команду Добавить ссылку.
В диалоговом окне Добавление ссылки на вкладке Обзор выберите Обзор и найдите Microsoft.VisualStudio.DebuggerVisualizers.DLL.
Библиотеку DLL можно найти в подкаталоге<Visual Studio Install Directory>\Common7\IDE\PublicAssemblies в каталоге установки Visual Studio.
Щелкните OK.
В файле DebuggerSide.vb добавьте следующий оператор к операторам импорта
Imports
:Imports Microsoft.VisualStudio.DebuggerVisualizers
Добавление кода для отладчика
Теперь можно приступить к написанию кода для отладчика. Этот код запускается отладчиком для отображения информации, которую требуется визуализировать. Во-первых, необходимо изменить объявление объекта DebuggerSide
таким образом, чтобы он наследовал базовый класс DialogDebuggerVisualizer
.
Наследование от DialogDebuggerVisualizer
В файле DebuggerSide.vb перейдите к следующей строке:
Public Class DebuggerSide
Измените код следующим образом:
Public Class DebuggerSide Inherits DialogDebuggerVisualizer
Примечание.
DialogDebuggerVisualizer ожидает
FormatterPolicy
аргумент в его конструкторе. Однако из-за проблем безопасности, описанных в разделе "Специальный отладчик" для .NET 5.0+, начиная с Visual Studio 2022 версии 17.11 визуализаторы не смогут указыватьLegacy
политику форматирования.DialogDebuggerVisualizer
имеет один абстрактный методShow
, который необходимо переопределить.
Переопределение метода DialogDebuggerVisualizer.Show
Добавьте следующий метод в класс
public class DebuggerSide
:Protected Overrides Sub Show(ByVal windowService As Microsoft.VisualStudio.DebuggerVisualizers.IDialogVisualizerService, ByVal objectProvider As Microsoft.VisualStudio.DebuggerVisualizers.IVisualizerObjectProvider) End Sub
Код метода
Show
отвечает за создание диалогового окна визуализатора или другого пользовательского интерфейса, а также за отображение информации, которая была передана визуализатору из отладчика. Необходимо вручную добавить код, который создает диалоговое окно и отображает информацию. В данном пошаговом руководстве для этого используется окно сообщения Windows Forms. Во-первых, необходимо добавить ссылку и операторImports
для импорта пространства имен System.Windows.Forms.
Добавление пространства имен System.Windows.Forms
В обозревателе решений щелкните правой кнопкой мыши Ссылки и выберите команду Добавить ссылку в контекстном меню.
В диалоговом окне Добавление ссылки на вкладке Обзор выберите Обзори найдите файл System.Windows.Forms.DLL.
Библиотеку DLL можно найти в C:\Windows\Microsoft.NET\Framework\v4.0.30319.
Щелкните OK.
В файле DebuggerSide.cs добавьте следующий оператор к операторам
Imports
:Imports System.Windows.Forms
Создание пользовательского интерфейса визуализатора
Сейчас необходимо добавить код для создания и отображения пользовательского интерфейса визуализатора. Поскольку это всего лишь пример, мы ограничимся написанием простого пользовательского интерфейса с использованием стандартного окна сообщений.
Вывод данных визуализатора в диалоговом окне
Добавьте в метод
Show
следующую строку кода:MessageBox.Show(objectProvider.GetObject().ToString())
В этом примере отсутствует код для обработки ошибок. В реальном визуализаторе, как и в приложении любого другого типа, код обработки ошибок должен присутствовать.
В меню Сборка выберите команду Построить MyFirstVisualizer. Построение проекта должно пройти без ошибок. Если при построении все же возникнут ошибки, исправьте их, прежде чем продолжить.
Добавление необходимого атрибута
Код для отладчика написан. Тем не менее, необходимо выполнить еще одно действие: добавить атрибут, который сообщает отлаживаемому объекту, какой набор классов формирует визуализатор.
Добавление типа для визуализации кода на стороне отлаживаемого объекта
В коде на стороне отладчика тип для визуализации (источник объекта) для отлаживаемого кода указывается с помощью атрибута DebuggerVisualizerAttribute. Свойство Target
задает тип для визуализации.
Добавьте следующий код атрибута в файл DebuggerSide.vb, после операторов
Imports
, но передnamespace MyFirstVisualizer
:<Assembly: System.Diagnostics.DebuggerVisualizer(GetType(MyFirstVisualizer.DebuggerSide), GetType(VisualizerObjectSource), Target:=GetType(System.String), Description:="My First Visualizer")>
В меню Сборка выберите команду Построить MyFirstVisualizer. Построение проекта должно пройти без ошибок. Если при построении все же возникнут ошибки, исправьте их, прежде чем продолжить.
Создание тестового окружения
На этом написание вашего первого визуализатора окончено. Если вы правильно следовали процедуре выше, можно построить визуализатор и установить его в Visual Studio. Но перед установкой визуализатора в Visual Studio следует убедиться, что он работает правильно. Для этого следует создать тестовое окружение, в котором визуализатор будет запускаться без установки в Visual Studio.
Добавление тестового метода для демонстрации визуализатора
Добавьте следующий метод в класс
public DebuggerSide
:Shared Public Sub TestShowVisualizer(ByVal objectToVisualize As Object) Dim visualizerHost As New VisualizerDevelopmentHost(objectToVisualize, GetType(DebuggerSide)) visualizerHost.ShowVisualizer() End Sub
В меню Сборка выберите команду Построить MyFirstVisualizer. Построение проекта должно пройти без ошибок. Если при построении все же возникнут ошибки, исправьте их, прежде чем продолжить.
Далее необходимо создать проект исполняемого файла, из которого будет вызваться библиотека DLL визуализатора. Для простоты выберите проект консольного приложения.
Добавление проекта консольного приложения в решение
В обозревателе решений щелкните правой кнопкой мыши решение, выберите пункт Добавить, а затем щелкните Новый проект.
В поле поиска, введите visual basic, выберите Шаблоны и затем Create new Console App (.NET Framework) (Создание консольного приложения — .NET Framework). В появившемся диалоговом окне выберите Создать.
Введите соответствующее имя для библиотеки класса, например
MyTestConsole
, а затем нажмите Создать или ОК.Теперь необходимо добавить необходимые ссылки, чтобы программа MyTestConsole могла вызывать MyFirstVisualizer.
Добавление необходимых ссылок в MyTestConsole
В обозревателе решений щелкните правой кнопкой мыши MyTestConsole и выберите команду Добавить ссылку в контекстном меню.
На вкладке Обзор диалогового окна Добавить ссылку выберите Microsoft.VisualStudio.DebuggerVisualizers.
Щелкните OK.
Щелкните правой кнопкой мыши MyTestConsole, после чего щелкните Добавить ссылку еще раз.
В диалоговом окне Добавить ссылку перейдите на вкладку Проекты и выберите MyFirstVisualizer.
Щелкните OK.
Доводка тестового окружения и тестирование визуализатора
Теперь нужно добавить код, которым завершится создание тестового окружения.
Добавление кода в MyTestConsole
В обозревателе решений щелкните правой кнопкой мыши Program.vb и выберите в контекстном меню команду Переименовать.
Измените имя Module1.vb на какое-нибудь более подходящее, например TestConsole.vb.
Обратите внимание, что Visual Studio автоматически изменяет объявление класса в TestConsole.vb в соответствии с новым именем файла.
В консоли TestConsole. vb, добавьте следующий оператор
Imports
:Imports MyFirstVisualizer
В метод
Main
добавьте следующий код:Dim myString As String = "Hello, World" DebuggerSide.TestShowVisualizer(myString)
Теперь все готово для проверки примера визуализатора.
Тестирование визуализатора
В обозревателе решений щелкните правой кнопкой мыши MyTestConsole и выберите в контекстном меню команду Сделать запускаемым проектом.
В меню Отладка выберите команду Начать.
Будет запущено консольное приложение. Появится окно визуализатора, в котором будет выведена строка "Hello, World".
Поздравляем. Вы только что создали и протестировали ваш первый визуализатор.
Если вам удобнее вызывать визуализатор из Visual Studio, а не из специально тестового окружения, визуализатор необходимо установить. Дополнительные сведения см. в разделе "Практическое руководство. Установка визуализатора".