在VS 2010中查询和导航代码

【原文地址】Searching and Navigating Code in VS 2010 (VS 2010 and .NET 4.0 Series)
【原文发表日期】 Wednesday, October 21, 2009 12:50 AM

这是我针对即将发布的VS 2010 和 .NET 4所撰写的 贴子系列的第九篇。今天的博客讨论已经内置于VS 2010中的一些新的代码查询和导航特性。

代码的查询和导航

开发人员需要能够对正开发的代码库(code-base)进行轻松的导航,查询和理解。在我们做的可用性研究中,我们一般会发现较之于实际编写新的代码,开发人员会花更多的时间在阅读,检查和查询现有的代码上。

VS 2010代码编辑器添加了一些非常棒的新特性,这些特性允许你更加高效地查询和导航代码库,允许你更轻松地理解代码在方案中是如何被使用的。

对ASP.NET MVC源码进行查询和导航

为这个博客贴子起见,我将使用ASP.NET MVC框架代码库(有好几千行代码)来帮助示范一些新的VS 2010查询和导航特性。如果你安装了VS 2010 Beta 2的话,你可以跟着我的示范,从这里下载并打开ASP.NET MVC框架源码。

你应该会发现下面的特性对这个项目而言,速度非常快,尽管该项目有好几千行代码。我在下面示范的所有的特性目前都内置于VS 2010了(对所有的项目类型,以及对VB 和 C#都工作)。

VS 2010 之“Navigate To (导航到)” 支持

能够快速地找到代码,并导航到这些代码,无论对大的还是小的方案都很重要。

Visual Studio 2010现在支持一个新的(Ctrl+逗号)的键盘快捷(即,控制键和逗号键同时按下)。当你按下(Ctrl+逗号)组合键时,一个新的VS 2010 “Navigate To(导航到)”对话框会出现,允许你快速地查询你的方案中的类型,文件,变量和成员,然后打开并且定位到这些东西上面:

这个“Navigate To”对话框提供了一个快速的递增查询界面, 你一开始键入查询文字,结果就立刻显示出来。例如,键入“cont”(不用按回车),你就会看到随着你开始键入,176个结果立刻显示在结果列表中:

再多键入几个字符,你就会看到列表自动过滤为那些匹配“controller”的结果:

你可以使用卷动条卷动结果,或者也可以按tab键,然后使用光标箭头键(如果你不想把手移离键盘的话)。你会发现“Navigate To” 窗口列出了匹配你的查询文字的所有类型的结果, 包括类型名称,方法、属性名称,字段声明,以及文件名称:

选择列表中的任意一个结果,会将相关的源码文件在VS 2010打开(如果还没有打开的话),立刻将你带到相关的源码位置(并且将其中的相关名称高亮显示):

很棒的模糊查询功能

“Navigate To”查询框还支持一些很棒的“模糊查询”功能,允许你做一些智慧的过滤和查询操作,而不必知道你正在查询的东西的确切名称。在对话框的递增/即查即显的查询界面中这些操作都工作良好,允许你改进你的查询,随着键入操作,就得到实时的结果。

来试一下,让我们首先查询“cache”这个词。注意一下,查询结果中不光包括那些起先的字母为“cache”的项,而且也显示了那些包含“cache”这个词的结果:

我们可以在查询文本框中加多个词,进一步过滤查询结果。例如,在下面,我对列表做了过滤,只包括那些名称中同时含有“cache” “action” 的结果:

.NET框架中的类型和成员用了一个命名设计指引模式叫“Pascal Casing”,即,类型或成员名称中每个词的第一个字母都是大写的。“Navigate To”对话框也允许你使用这个“Pascal Casing”约定来快速地过滤类型。只键入类型/成员名称的大写首字母,它就会立刻过滤列出匹配大写pascal命名约定的结果。

例如,键入“AMS” 会过滤出下面的结果(只有那些名称中的词先以A起头,然后是以M起头,然后是以S起头的类型和成员):

“Navigate To” 对话框允许你以最少的键击次数就能快速地过滤和定位代码,免去你不得不使用鼠标,打开解决方案管理器,然后直接点击文件的劳苦。

查看调用的层次结构

拥有快速查询和导航的能力固然是好,但要是能够快速地发现代码是怎么被使用的,那就更好了。VS 2010引进了一个新的“View Call Hierarchy (查看调用的层次结构)”的特性,允许你快速地发现你的代码库中的某个特定方法或属性是在何处被调用的,允许你快速地遍历(traverse)整个代码库 的调用树形图(而不必运行或调试方案)。

要用这个特性,只要选择你的代码库中的一个方法或属性名称,然后键入(Ctrl+K,Ctrl+T )快捷键组合,或者右击、然后选择“View Call Hierarchy”上下文菜单命令:

这会调出一个新的“Call Hierarchy (调用的层次结构)”工具窗口,在默认情形下会在代码编辑器下方显示。在下面,你可以看到“Call Hierarchy”窗口显示了我们方案中的2个方法,它们调用了我们在上面选择了的 ViewPage.RenderView() 方法。

然后,我们还可以向下钻取到第一个“RenderViewAndRestoreContentType”方法,进而看都是谁调用了它:

对虚拟方法/属性,你还可以使用调用层次结构窗口看哪些类继承并覆盖了它们。

双击“Call Hierarchy”窗口中的任意一个成员会打开相应的源码文件,立刻将你带到对应的源码位置:

这允许你快速地在代码库中导航,在编写代码时,更好地理解类和方法间的关系。

引用的高亮显示

在VS 2010中,当你在代码编辑器中选择或高亮显示一个变量/参数/字段声明时,所有这些东西随后用到的地方都会在编辑器中为你自动地高亮显示,这方便你快速地识别一个变量或参数是在什么地方被使用的以及是如何使用的。

例如,当我们在下面的编辑器中选择传到ControllerActionInvoker.GetParameterValue()方法中的“controllerContext” 参数时,注意在该方法中用了这个参数的4个地方现在都被自动高亮显示了:

如果我选择该方法中的一个局部变量,用到了它的所有地方现在都被自动地高亮显示了:

如果多个地方被高亮显示了,你可以使用(Ctrl-Shift-up箭头)键组合和(Ctrl-Shift-Down箭头键组合在它们之间来回循环,快速地将光标移到上一个或下一个高亮显示的字符上。

结束语

新的 VS 2010 文本编辑器方便了对项目或方案中的代码的快速查询,导航和探究。这些操作的速度非常之快(即使是在一个大的代码库内),而且随着你对项目进行改动,会保持更新,最终结果是使你的生产力大为提高。

希望本文对你有所帮助,

Scott

除了写博客外,最近我一直在使用Twitter发短贴和共享链接。你可以在Twitter上通过www.twitter.com/scottgu(@scottgu是我的twitter名)跟随我。

【译注】把上面的Navigate翻译成“导航”觉得有点那个,其实这里的意思跟“定向”,“定位”,“转向”相近。

在VS 2010中查询和导航代码

时间: 2024-11-07 05:38:14

在VS 2010中查询和导航代码的相关文章

sharepoint 2013 中自建母版页,自动生成html中的顶部导航代码步骤

sharepoint 2013 中自建母版页,自动生成html中的顶部导航代码步骤 分类: SharePoint2013-07-05 11:21 738人阅读 评论(0) 收藏 举报 SharePointsharepoint 2013 1.点击打开设计编辑器:编辑母版页项目 2.找到或者新建一个测试页面(.html),点击网页右上方的"代码段"打开 3.点击代码段打开如下页面,点击对应导航便会自动生成html中可以直接是用的导航代码 4.复制代码段到html模板中相应位置(自行定义,可

eImage(仅两行代码实现输出从数据库中查询到的二进制字段)标签

功能: 专门用于向浏览器输出从数据库中查询到的二进制字段.支持通用的几十种文件类型 别名为edoc 使用方法: <chtml><eimage id=书包名type=类型>key</eimage></chtml>或 <chtml><edocid==书包名 type=类型>key</edoc></chtml> ·        id:书包名.ESql标签返回的书包名称 ·        type:类型.输出文件类型

EasyUI中datagrid实现显示、增加、 删除、 修改、 查询操作(后台代码C#)

2datagrid加载数据.代码如下所示 一.数据的显示 1新建HtmlPage2.html页面,引入相关文件.如下所示 <script src="easyui/js/jquery-1.8.2.min.js"></script>  <script src="easyui/js/jquery.easyui.min.js"></script>  <link href="easyui/css/themes/d

Visual Studio 2010 中的 Web 开发

概述 Microsoft Visual Studio 2010 为 ASP.NET Web 应用程序的开发提供非常多新的功能.这些新功能旨在帮助开发者高速方便地创建和部署质量高且功能全的 Web 应用程序. 眼下,Visual Studio 2010 支持 HTML 代码片段.利用这些代码片段,能够生成高质量的代码.Visual Studio 中附带了非常多代码片段,开发者也能够创建自己的代码片段. Visual Studio 2010 提供的还有一个新功能是转换 web.config 文件,以

VSTO 学习笔记(六)在 Excel 2010中使用RDLC报表

原文:VSTO 学习笔记(六)在 Excel 2010中使用RDLC报表 Excel具有强大的图表显示.分析功能,这点毋庸置疑,但是如果将常规MIS系统中的数据以报表的形式在Excel中显示,却并不那么容易.在VSTO中,我们可以借助RDLC报表组件来满足这种需求. 示例代码下载 本系列所有示例代码均在 Visual Studio 2010 Ultimate RTM + Office 2010 Professional Plus Beta x64 下测试通过 注:本次数据库使用的是 SQL Se

【SQL Server数据迁移】64位的机器:SQL Server中查询ORACLE的数据

从SQL Server中查询ORACLE中的数据,可以在SQL Server中创建到ORACLE的链接服务器来实现的,但是根据32位 .64位的机器和软件,需要用不同的驱动程序来实现. 在64位的机器上,通过访问接口:OracleProvide for OLE DB,来实现. 1.机器环境和软件环境 操作系统是:windows 7旗舰版 64位,SQL Server 20008R2  64  位,Oracle 11g 11.2.0.1.0   64 位. 2.ORACLE环境的设置 连接orac

如何在Word中排出漂亮的代码

引言 学数学和计算机,当然还是用LaTeX排版技术文章更方便.但有时候还是迫不得已需要用Word写作,另外Word其实也有Word的好处,比如细节上的修改要比LaTeX方便. 从Matlab高亮代码复制到Word,中文会乱码开始,我就很想研究下如何在Word中展示漂亮的代码.今年寒假利用Vim,有些突破,10月3日的时候又有了比较大的进展,自己设计了一款Vim的代码高亮配色方案,然后利用Vim的:TOhtml命令生成html文件,再用浏览器打开html文件,复制里面的代码到Word,就能保留原始

Sql Server 存储过程中查询数据无法使用 Union(All)

原文:Sql Server 存储过程中查询数据无法使用 Union(All) 微软Sql Server数据库中,书写存储过程时,关于查询数据,无法使用Union(All)关联多个查询. 1.先看一段正常的SQL语句,使用了Union(All)查询: SELECT ci.CustId --客户编号 , ci.CustNam --客户名称 , ci.ContactBy --联系人 , ci.Conacts --联系电话 , ci.Addr -- 联系地址 , ci.Notes --备注信息 , ai

VB 6.0中判断是否Access 2010中存在指定表格

问题 最近在工作中遇到使用VB6判断是否ACCESS 2010数据库中是否存在指定表格的问题.对于早期ACCESS数据库(应当主要是ACCESS 2003及以前版本),使用DAO引擎操作是没有问题的.主要相关代码如下: For Each mytable In mydatabase.TableDefs    print mytable.nameNext 但是,DAO技术已经不适用于ACCESS 2010了.为此,我使用BAIDU搜索,初步得到的一个方法如下: cn2.Open "Provider=