重要
从 Visual Studio 2022 版本 17.9 开始,可视化工具现在可以使用新的 VisualStudio.Extensibility 模型以 .NET 6.0+ 编写,以进程外运行。 我们鼓励可视化工具作者在 创建 Visual Studio 调试器可视化工具 中引用新文档,除非他们希望支持旧版 Visual Studio,或者希望将其自定义可视化工具作为库 DLL 的一部分交付。
本演练演示如何使用 Visual Basic 编写简单的可视化工具。 在本演练中创建的可视化工具使用 Windows 窗体消息框显示字符串的内容。 这个简单的字符串可视化工具是一个基本示例,演示如何为其他数据类型创建更适用于项目的可视化工具。
注释
你看到的对话框和菜单命令可能与“帮助”中所述的命令不同,具体取决于你的活动设置或版本。 若要更改设置,请转到 “工具” 菜单,然后选择“ 导入和导出 ”。 有关详细信息,请参阅 重置设置。
可视化工具代码必须放置在调试器将读取的 DLL 中。 第一步是为 DLL 创建类库项目。
创建并配置类库项目
创建类库项目
创建新的类库项目。
按 Esc 关闭开始窗口。 键入 Ctrl + Q 打开搜索框,键入类库,然后选择 Visual Basic 类库(.NET Framework)。
按 Esc 关闭开始窗口。 键入 Ctrl + Q 以打开搜索框,键入视觉对象基本,选择“模板”,然后选择“创建新的类库”(.NET Framework)。
键入类库的相应名称,例如
MyFirstVisualizer
,然后单击“ 创建 ”或“ 确定”。创建类库后,必须添加对 Microsoft.VisualStudio.DebuggerVisualizers.DLL 的引用,以便可以使用其中定义的类。 但是,首先,为项目提供有意义的名称。
重命名Class1.vb并添加 Microsoft.VisualStudio.DebuggerVisualizers
在 解决方案资源管理器中,右键单击 Class1.vb,然后在快捷菜单上单击“ 重命名”。
将名称从Class1.vb更改为有意义的内容,例如DebuggerSide.vb。
注释
Visual Studio 会自动更改DebuggerSide.vb中的类声明以匹配新文件名。
在 解决方案资源管理器中,右键单击 “我的第一个可视化工具”,然后在快捷菜单上单击“ 添加引用”。
在“ 添加引用 ”对话框中的“ 浏览 ”选项卡上,选择“ 浏览 ”并找到Microsoft.VisualStudio.DebuggerVisualizers.DLL。
可以在 Visual Studio 的安装目录>\Common7\IDE\PublicAssemblies 子目录中找到 DLL<。
单击 “确定” 。
在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 窗体消息框执行此操作。 首先,必须为 System.Windows.Forms 添加引用和Imports
语句。
添加 System.Windows.Forms
在 解决方案资源管理器中,右键单击 “引用”,然后在快捷菜单上单击“ 添加引用”。
在“ 添加引用 ”对话框中的“ 浏览 ”选项卡上,选择“ 浏览”,找到System.Windows.Forms.DLL。
可以在 C:\Windows\Microsoft.NET\Framework\v4.0.30319 中找到 DLL。
单击 “确定” 。
在DebuggerSide.cs中,将以下语句添加到
Imports
语句中:Imports System.Windows.Forms
创建可视化工具的用户界面
现在,你将添加一些代码来创建和显示可视化工具的用户界面。 由于这是你的第一个可视化工具,因此你将保持用户界面简单并使用 Message Box。
在对话框中显示可视化工具输出
在
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。 为简单起见,请使用控制台应用程序项目。
将控制台应用程序项目添加到解决方案
在解决方案资源管理器中,右键单击解决方案,选择“ 添加”,然后单击“ 新建项目”。
在“搜索”框中,键入视觉对象基本,选择“模板”,然后选择“创建新的控制台应用”(.NET Framework)。 在出现的对话框中,选择创建。
键入类库的相应名称,例如
MyTestConsole
,然后单击“ 创建 ”或“ 确定”。现在,必须添加必要的引用,以便 MyTestConsole 可以调用 MyFirstVisualizer。
添加对 MyTestConsole 的必需引用
在 解决方案资源管理器中,右键单击 MyTestConsole,然后在快捷菜单上单击“ 添加引用”。
在“ 添加引用 ”对话框中的“ 浏览 ”选项卡上,单击Microsoft.VisualStudio.DebuggerVisualizers。
单击 “确定” 。
右键单击 MyTestConsole,然后单击“ 添加引用 ”。
在“ 添加引用 ”对话框中,单击“ 项目 ”选项卡,然后选择“MyFirstVisualizer”。
单击 “确定” 。
完成测试工具并测试可视化工具
现在,添加代码以完成测试套。
将代码添加到 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 中使用可视化工具,而不是只从测试工具中调用它,则需要安装它。 有关详细信息,请参阅 如何:安装可视化工具。