チュートリアル: Visual Basic でビジュアライザーを記述する
重要
Visual Studio 2022 バージョン 17.9 以降では、新しい VisualStudio.Extensibility モデルを使用してアウトプロセスを実行する .NET 6.0 以降でビジュアライザーを記述できるようになりました。 以前のバージョンの Visual Studio をサポートする場合や、カスタム ビジュアライザーをライブラリ DLL の一部として提供する場合を除き、ビジュアライザー作成者は Visual Studio デバッガー ビジュアライザーの作成で新しいドキュメントを参照することをお勧めします。
このチュートリアルでは、Visual Basic を使って簡単なビジュアライザーを作成する方法を説明します。 このチュートリアルで作成するビジュアライザーは、Windows フォーム メッセージ ボックスを使用して文字列の内容を表示します。 この単純な文字列のビジュアライザーは基本的な例で、プロジェクトに合わせて他のデータ型向けのビジュアライザーを作成するときに参考になります。
注意
使用している設定またはエディションによっては、ヘルプの記載と異なるダイアログ ボックスやメニュー コマンドが表示される場合があります。 設定を変更するには、 [ツール] メニューの [設定のインポートとエクスポート] をクリックします。 詳細については、「リセット設定」を参照してください。
ビジュアライザー コードは、デバッガーによって読み取られる DLL に配置する必要があります。 最初の手順として、DLL のクラス ライブラリ プロジェクトを作成します。
クラス ライブラリ プロジェクトの作成と準備
クラス ライブラリ プロジェクトを作成するには
新しいクラス ライブラリ プロジェクトを作成します。
Esc キーを押してスタート ウィンドウを閉じます。 Ctrl + Q キーを押して検索ボックスを開き、「visual basic」と入力し、 [テンプレート] を選択して、 [Create a new Class Library (.NET Framework)](新しいクラス ライブラリの作成 (.NET Framework)) を選択します。 表示されたダイアログ ボックスで、 [作成] を選択します。
クラス ライブラリの適切な名前 (
MyFirstVisualizer
など) を入力し、 [作成] または [OK] をクリックします。クラス ライブラリを作成したら、Microsoft.VisualStudio.DebuggerVisualizers.DLL への参照を追加することによって、この 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 のインストール ディレクトリの <Visual Studio Install Directory>\Common7\IDE\PublicAssemblies サブディレクトリにあります。
[OK] をクリックします。
DebuggerSide.vb の
Imports
ステートメントに次のステートメントを追加します。Imports Microsoft.VisualStudio.DebuggerVisualizers
デバッガー側のコードの追加
これで、デバッガー側のコードを作成する準備が整いました。 これは、視覚化を要する情報を表示するためにデバッガー内で実行されるコードです。 最初に、DebuggerSide
オブジェクトの宣言を変更して、DialogDebuggerVisualizer
基底クラスを継承するようにする必要があります。
DialogDebuggerVisualizer から継承するには
DebuggerSide.vb で、次のコード行に移動します。
Public Class DebuggerSide
次のようにコードを編集します。
Public Class DebuggerSide Inherits DialogDebuggerVisualizer
Note
DialogDebuggerVisualizer では、そのコンストラクターに
FormatterPolicy
引数が必要です。 ただし、.NET 5.0 以降のデバッガー側の特別な考慮事項で説明されているセキュリティの問題により、Visual Studio 2022 バージョン 17.11 以降、ビジュアライザーではLegacy
フォーマッタ ポリシーを指定できません。DialogDebuggerVisualizer
には、オーバーライドする必要がある抽象メソッドが 1 つ (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 フォーム メッセージ ボックスを使用します。 最初に、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 のビルド] をクリックします。 プロジェクトが構築されます。 ビルド エラーを修正してから次の作業に進みます。
必要な属性の追加
これで、デバッガー側のコードは終わりです。 ただし、もう 1 つ追加するものがあります。それは、ビジュアライザーを構成しているクラスのコレクションをデバッグ対象側に通知する属性です。
デバッグ対象側のコードで視覚化する型を追加するには
デバッガー側のコードで 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 a new Console App (.NET Framework)](新しいコンソール アプリの作成 (.NET Framework)) を選択します。 表示されたダイアログ ボックスで、 [作成] を選択します。
クラス ライブラリの適切な名前 (
MyTestConsole
など) を入力し、 [作成] または [OK] をクリックします。次に、必要な参照を追加して、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 で使用する場合は、ビジュアライザーをインストールする必要があります。 詳細については、ビジュアライザーをインストールする」を参照してください。