重要
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 クラス ライブラリ (.NET Framework) を選択します。
Esc キーを押してスタート ウィンドウを閉じます。 Ctrl + Q キーを押して検索ボックスを開き、「visual basic」と入力し、[テンプレート] を選択してから、[新しいクラス ライブラリの作成 (.NET Framework)] を選択します。
クラス ライブラリの適切な名前 (
MyFirstVisualizer
など) を入力し、[ 作成 ] または [OK] をクリックします。クラス ライブラリを作成したら、そこで定義されているクラスを使用できるように、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 のインストール ディレクトリの <Visual Studio インストール ディレクトリ>\Common7\IDE\PublicAssemblies サブディレクトリにあります。
OK をクリックします。
DebuggerSide.vbで、次のステートメントを
Imports
ステートメントに追加します。Imports Microsoft.VisualStudio.DebuggerVisualizers
デバッガー側コードを追加する
これで、デバッガー側のコードを作成する準備ができました。 これは、視覚化する情報を表示するためにデバッガー内で実行されるコードです。 最初に、基底クラスのDialogDebuggerVisualizer
から継承するように、DebuggerSide
オブジェクトの宣言を変更する必要があります。
DialogDebuggerVisualizer から継承するには
DebuggerSide.vbで、次のコード行に移動します。
Public Class DebuggerSide
次のようにコードを編集します。
Public Class DebuggerSide Inherits DialogDebuggerVisualizer
注
DialogDebuggerVisualizer では、コンストラクターに
FormatterPolicy
引数が必要です。 ただし、Visual Studio 2022 バージョン 17.11 以降では、 .NET 5.0 以降のデバッガー側の特別な考慮事項で説明されているセキュリティの問題により、ビジュアライザーは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 フォーム のメッセージ ボックスを使用してこれを行います。 最初に、System.Windows.Formsの参照とImports
ステートメントを追加する必要があります。
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())
このコード例には、エラー処理は含まれません。 実際のビジュアライザーやその他の種類のアプリケーションにエラー処理を含める必要があります。
[ ビルド ] メニューの [ Build MyFirstVisualizer] をクリックします。 プロジェクトが正常に構築されるはずです。 続行する前に、ビルド エラーを修正してください。
必要な属性を追加する
これがデバッガー側のコードの末尾です。 ただし、もう 1 つの手順があります。デバッグ対象側に、ビジュアライザーを構成するクラスのコレクションを示す属性です。
デバッグ対象側のコードを視覚化するための型を追加するには
デバッガー側のコードでは、 DebuggerVisualizerAttribute 属性を使用して、デバッグ対象の視覚化する型 (オブジェクト ソース) を指定します。 Target
プロパティは、視覚化する型を設定します。
Imports
ステートメントの後、namespace MyFirstVisualizer
の前に、次の属性コードをDebuggerSide.vbに追加します。<Assembly: System.Diagnostics.DebuggerVisualizer(GetType(MyFirstVisualizer.DebuggerSide), GetType(VisualizerObjectSource), Target:=GetType(System.String), Description:="My First Visualizer")>
[ ビルド ] メニューの [ Build 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
[ ビルド ] メニューの [ Build MyFirstVisualizer] をクリックします。 プロジェクトは正常に構築されるはずです。 続行する前に、ビルド エラーを修正してください。
次に、ビジュアライザー DLL を呼び出す実行可能プロジェクトを作成する必要があります。 わかりやすくするために、コンソール アプリケーション プロジェクトを使用します。
コンソール アプリケーション プロジェクトをソリューションに追加するには
ソリューション エクスプローラーで、ソリューションを右クリックし、[ 追加] を選択し、[ 新しいプロジェクト] をクリックします。
[検索] ボックスに 「visual basic」と入力し、[ テンプレート] を選択し、[ 新しいコンソール アプリの作成 (.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 でビジュアライザーを使用する場合は、インストールする必要があります。 詳細については、「 方法: ビジュアライザーをインストールする」を参照してください。