可以使用各种工具窗口(包括 类视图、 调用层次结构、 对象浏览器和 代码定义)在 Visual Studio 中检查类及其成员。 这些工具窗口可以检查 Visual Studio 项目、.NET 组件、COM 组件、动态链接库(DLL)和类型库(TLB)中的代码。
还可以使用 解决方案资源管理器 浏览项目中的类型和成员、搜索符号、查看方法的调用层次结构、查找符号引用等,而无需在多个工具窗口之间切换。
如果有 Visual Studio Enterprise 版本,可以使用 代码映射 来可视化整个解决方案中的代码结构及其依赖项。 有关详细信息,请参阅使用代码图绘制依赖项。
类视图(Visual Basic、C#、C++)
类视图 显示为 解决方案资源管理器 的一部分,并显示为单独的窗口。 类视图 显示应用程序的元素。 上窗格显示命名空间、类型、接口、枚举和类,下窗格显示属于上窗格中所选类型的成员。 使用此窗口,可以移动到源代码中的成员定义(或者在 对象浏览器中 (如果元素在解决方案外部定义)。
无需编译项目才能在 类视图中查看其元素。 修改项目中的代码时,将刷新该窗口。
可以通过选择项目节点并选择 “添加 ”按钮打开“ 添加新项 ”对话框,将代码添加到项目。 代码将添加到单独的文件中。
如果项目已签入源代码控制,则每个 类视图 元素都会显示一个图标,该图标指示文件的源代码状态。 元素的快捷菜单上也提供了常见的源代码控制命令,例如 签出、 签入和 获取最新版本 。
类视图工具栏
类视图工具栏包含以下命令:
| Name | Description |
|---|---|
| 新建文件夹 | 创建虚拟文件夹或子文件夹,在其中可以组织常用元素。 它们保存在活动解决方案 (.suo) 文件中。 重命名或删除代码中的元素后,它可能会以错误节点的形式显示在虚拟文件夹中。 若要更正此问题,请删除错误节点。 如果重命名了某个元素,则可以再次将其从项目层次结构移动到该文件夹中。 |
| 返回 | 导航到之前选择的项。 |
| 转发 | 导航到下一个选定项。 |
| 查看类图 (仅限托管代码项目) | 在 类视图中选择命名空间或类型时可用。 选择命名空间后,类图会显示其中的所有类型。 选择类型后,类图仅显示该类型。 |
类视图设置
工具栏上的 “类视图设置” 按钮具有以下设置:
| Name | Description |
|---|---|
| 显示基类型 | 将显示基类型。 |
| 显示项目引用 | 将显示项目引用。 |
| 显示隐藏类型和成员 | 隐藏类型和成员(不供客户端使用)以浅灰色文本显示。 |
| 显示公共成员 | 将显示公共成员。 |
| 显示受保护的成员 | 将显示受保护的成员。 |
| 显示专用成员 | 将显示专用成员。 |
| 显示其他成员 | 显示其他类型的成员,包括内部成员(或 Visual Basic 中的好友) 成员。 |
| 显示继承的成员 | 将显示继承的成员。 |
类视图快捷菜单
类视图中的快捷方式(或右键单击)菜单可能包含以下命令,具体取决于所选项目的类型:
| Name | Description |
|---|---|
| 转到定义 | 在源代码或 对象浏览器中查找元素的定义(如果未在打开的项目中定义该元素)。 |
| 浏览定义 | 在 对象浏览器中显示所选项。 |
| 查找所有引用 | 查找当前选定的对象项,并在 “查找结果” 窗口中显示结果。 |
| 筛选类型 (仅限托管代码) | 仅显示所选类型或命名空间。 可以通过选择“查找”框旁边的“清除查找”按钮来删除筛选器。 |
| Copy | 复制项的完全限定名称。 |
| 按字母顺序排序 | 按名称按字母顺序列出类型和成员。 |
| 按成员类型排序 | 按类型列出类型和成员(例如类位于接口之前、接口位于委托之前,方法位于属性前面)。 |
| 按成员访问排序 | 按访问类型(如公共或专用)按顺序列出类型和成员。 |
| 按成员类型分组 | 按对象类型将类型和成员排序为组。 |
| 转到声明 (仅C++代码) | 显示源代码中类型或成员的声明(如果可用)。 |
| 转到定义 | 显示源代码中类型或成员的定义(如果可用)。 |
| 转到参考 | 显示对源代码中的类型或成员的引用(如果可用)。 |
| 查看呼叫层次结构 | 在 “调用层次结构 ”窗口中显示所选方法。 |
“调用层次结构”窗口(Visual Basic、C#、C++)
“ 调用层次结构 ”窗口显示调用给定的方法或属性的位置。 它还列出了从该方法调用的方法。 可以查看调用图的多个级别,其中显示了指定作用域中方法之间的调用方-被调用方关系。
可以在编辑器中选择方法(或属性或构造函数),然后在快捷菜单中选择“查看调用层次结构”来显示“调用层次结构”窗口。 显示应类似于下图:
通过使用工具栏上的下拉列表,可以指定层次结构的范围:解决方案、当前项目或当前文档。
主窗格显示对方法的调用和调用, “呼叫网站 ”窗格显示所选呼叫的位置。 对于虚拟或抽象成员,将显示 Overrides 方法名称 节点。 对于接口成员,将显示 一个 Implements 方法名称 节点。
“调用层次结构”窗口找不到方法组引用,其中包括将方法添加为事件处理程序或分配给委托的位置。 若要查找这些引用,请使用 “查找所有引用 ”命令。
“调用层次结构”窗口中的快捷菜单包含以下命令:
| Name | Description |
|---|---|
| 添加为新根 | 将所选节点添加为新的根节点。 |
| 删除根 | 从树视图窗格中删除所选根节点。 |
| 转到定义 | 导航到方法的原始定义。 |
| 查找所有引用 | 在项目中查找对所选方法的所有引用。 |
| Copy | 复制所选节点(但不复制其子节点)。 |
| 刷新 | 刷新信息。 |
对象浏览器
“ 对象浏览器” 窗口显示项目中代码的说明。
可以使用窗口顶部的下拉列表筛选要查看的组件。 自定义组件可以包括托管代码可执行文件、库程序集、类型库和 .ocx 文件。 无法添加C++自定义组件。
自定义设置保存在 Visual Studio 用户应用程序目录中, %APPDATA%\Microsoft\VisualStudio\16.0\ObjBrowEX.dat。
对象浏览器的左窗格显示程序集。 可以展开程序集以显示它们包含的命名空间,然后展开命名空间以显示它们所包含的类型。 选择类型时,其成员(如属性和方法)列在右窗格中。 右下窗格显示有关所选项的详细信息。
可以使用窗口顶部的 “搜索 ”框搜索特定项。 搜索不区分大小写。 搜索结果显示在左窗格中。 若要清除搜索,请选择“搜索”框旁边的“清除搜索”按钮。
对象浏览器会跟踪所做的选择,并且可以使用工具栏上的“前进”和“后退”按钮在所选内容之间导航。
可以通过选择项(程序集、命名空间、类型或成员)并选择工具栏上的“添加引用”按钮,使用对象浏览器向打开的解决方案添加程序集引用。
对象浏览器设置
通过使用工具栏上的 “对象浏览器设置” 按钮,可以指定以下视图之一:
| Name | Description |
|---|---|
| 查看命名空间 | 在左窗格中显示命名空间而不是物理容器。 存储在多个物理容器中的命名空间将合并。 |
| 查看容器 | 在左窗格中显示物理容器而不是命名空间。 视图命名空间 和 视图容器 是互斥的设置。 |
| 显示基类型 | 显示基类型。 |
| 显示隐藏类型和成员 | 以浅灰色文本显示隐藏类型和成员(不适合由客户端使用)。 |
| 显示公共成员 | 显示公共成员。 |
| 显示受保护的成员 | 显示受保护的成员。 |
| 显示专用成员 | 显示私有成员。 |
| 显示其他成员 | 显示其他类型的成员,包括内部成员(或 Visual Basic 中的好友) 成员。 |
| 显示继承的成员 | 显示继承的成员。 |
| 显示扩展方法 | 显示扩展方法。 |
对象浏览器快捷菜单命令
对象浏览器中的快捷方式(或右键单击)菜单可能包含以下命令,具体取决于所选的项类型:
| Name | Description |
|---|---|
| 浏览定义 | 显示所选项的主节点。 |
| 查找所有引用 | 查找当前选定的对象项,并在 “查找结果” 窗口中显示结果。 |
| 筛选到类型 | 仅显示所选类型或命名空间。 可以通过选择“ 清除搜索 ”按钮来删除筛选器。 |
| Copy | 复制项的完全限定名称。 |
| 删除 | 如果作用域是自定义组件集,则从范围中删除所选组件。 |
| 按字母顺序排序 | 按名称按字母顺序列出类型和成员。 |
| 按对象类型排序 | 按类型列出类型和成员(例如类位于接口之前、接口位于委托之前,方法位于属性前面)。 |
| 按对象访问排序 | 按访问类型(如公共或专用)按顺序列出类型和成员。 |
| 按对象类型分组 | 按对象类型将类型和成员排序为组。 |
| 转到声明 (仅C++项目) | 显示源代码中类型或成员的声明(如果可用)。 |
| 转到定义 | 显示源代码中类型或成员的定义(如果可用)。 |
| 转到参考 | 显示对源代码中的类型或成员的引用(如果可用)。 |
| 查看呼叫层次结构 | 在 “调用层次结构 ”窗口中显示所选方法。 |
代码定义窗口
“ 代码定义 ”窗口显示活动项目中所选C++、C# 或 Visual Basic 类型或成员的定义。 可以在代码编辑器或代码视图窗口中选择类型或成员。
虽然此窗口是只读的,但你可以在其中设置断点或书签。 若要修改显示的定义,请选择快捷菜单上的 “编辑定义 ”。 这会在代码编辑器中打开源文件,并将插入点移动到定义开始的行。
代码定义快捷菜单
“ 代码定义 ”窗口中的快捷方式(或右键单击)菜单可能包含以下命令:
| Name | Description |
|---|---|
| 快速作和重构 | |
| Rename | |
| 生成包含文件的图形 | |
| 速览定义 | |
| 转到定义 | 查找定义(或部分类的定义),并在 “查找结果” 窗口中显示它们。 |
| 转到声明 | |
| 查找所有引用 | 查找对解决方案中类型或成员的引用。 |
| 查看呼叫层次结构 | 在 “调用层次结构” 窗口中显示该方法。 |
| 切换标头/代码文件 | |
| 运行测试 | 如果项目中存在单元测试,请运行所选代码的测试。 |
| 调试测试 | |
| 断点 | 插入断点(或跟踪点)。 |
| 运行到游标 | 在调试模式下运行程序到游标的位置。 |
| 代码片段 | |
| 剪切、 复制、 粘贴 | |
| Annotation | |
| 概述 | 标准大纲说明命令。 |
| 重新扫描 | |
| 编辑定义 | 将插入点移动到代码窗口中的定义。 |
| 选择编码 | 打开 “编码” 窗口,以便您可以设置文件的编码。 |
“文档大纲”窗口
可以将 “文档大纲 ”窗口与设计器视图结合使用,例如 XAML 页面或 Windows 窗体设计器的设计器,也可以使用 HTML 页面。 此窗口显示树视图中的元素,以便可以查看窗体或页面的逻辑结构,并查找深度嵌入或隐藏的控件。