逐步解說:在 Visual Basic 中撰寫視覺化檢視
重要
從 Visual Studio 2022 17.9 版開始,現在可以使用新的 VisualStudio.Extensibility 模型,以 .NET 6.0+ 撰寫執行跨處理序的視覺化檢視。 我們鼓勵視覺化檢視作者參考建立 Visual Studio 偵錯工具視覺化檢視的新文件,除非他們想支援舊版 Visual Studio,或想要將自訂視覺化檢視當做程式庫 DLL 的一部分發佈。
本逐步解說顯示如何使用 Visual Basic 撰寫簡易的視覺化檢視。 您在本逐步解說中建立的視覺化檢視會使用 Windows Form 訊息方塊顯示字串的內容。 這個簡易字串視覺化檢視是一個基本範例,示範如何建立更適用專案之其他資料型別的視覺化檢視。
注意
根據目前使用的設定與版本,您所看到的對話方塊與功能表命令可能會與 [說明] 中所描述的不同。 若要變更設定,請在 [工具] 功能表中選擇 [匯入和匯出]。 如需詳細資訊,請參閱重設設定。
視覺化檢視的程式碼必須放置在偵錯工具將讀取的 DLL 中。 第一步就是為 DLL 建立類別庫專案。
建立和準備類別庫專案
若要建立類別庫專案
建立新的類別庫專案。
按 Esc 來關閉開始視窗。 鍵入 Ctrl + Q 來開啟 [搜尋] 方塊,鍵入 visual basic,選擇 [範本],然後選擇 [建立新的類別庫 (.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。
您可以在 Visual Studio 安裝目錄的 <Visual Studio 安裝目錄>\Common7\IDE\PublicAssemblies 子目錄中,找到 DLL。
按一下 [確定]。
在 DebuggerSide.vb 中,將下列陳述式加入至
Imports
陳述式:Imports Microsoft.VisualStudio.DebuggerVisualizers
加入偵錯工具端程式碼
現在,您就可以準備建立偵錯工具端的程式碼。 這是在偵錯工具內執行的程式碼,用以顯示您要視覺化的資訊。 首先,您必須變更 DebuggerSide
物件的宣告,使其繼承基底類別 (Base Class) 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 Form 訊息方塊進行上述動作。 首先,您必須加入Imports
的參考和 System.Windows.Forms 陳述式。
若要加入 System.Windows.Forms
在 [方案總管]中,以滑鼠右鍵按一下 [參考],並從捷徑功能表中按一下 [新增參考]。
在 [新增參考] 對話方塊的 [瀏覽] 索引標籤上 ,選取 [瀏覽],然後尋找 System.Windows.Forms.DLL。
您可以在 C:\Windows\Microsoft.NET\Framework\v4.0.30319 中找到 DLL。
按一下 [確定]。
在 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]。 專案應該會順利建置。 在繼續進行之前,請更正任何建置錯誤。
建立 Test Harness
這時,您的第一個視覺化檢視已完成。 如果您已正確遵循這些步驟,則可以建置視覺化檢視,並將其安裝至 Visual Studio。 不過,在將視覺化檢視安裝至 Visual Studio 之前,應該先對其進行測試,以確定其可正確執行。 現在,您將建立 Test Harness 來執行視覺化檢閱,而不將其安裝至 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,選擇 [範本],然後選擇 [建立新的主控台應用程式 #.NET Framework]。 在出現的對話方塊中,選擇 [建立]。
輸入類別庫的適當名稱,例如
MyTestConsole
,然後按一下 [建立] 或 [確定]。此時,你必須加入必要的參考,如此 MyTestConsole 才能呼叫 MyFirstVisualizer。
若要將必要參考加入至 MyTestConsole
在 [方案總管] 中以滑鼠右鍵按一下 [MyTestConsole],然後在捷徑功能表中按一下 [新增參考]。
在 [新增參考] 對話方塊的 [瀏覽] 索引標籤上,按一下 [Microsoft.VisualStudio.DebuggerVisualizers]。
按一下 [確定]。
以滑鼠右鍵按一下 [MyTestConsole],然後再次按一下 [新增參考]。
在 [新增參考] 對話方塊中,按一下 [專案] 索引標籤,然後選取 [MyFirstVisualizer]。
按一下 [確定]。
完成 Test Harness 並測試視覺化檢閱
現在,您就可以加入程式碼來完成測試載入器。
若要將程式碼加入至 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 中使用視覺化檢閱,而不只是從測試控管中進行呼叫,就必須安裝該視覺化檢閱。 如需詳細資訊,請參閱作法:安裝視覺化檢視。