对于开发环境而言,另一个值得注意的增强功能是停靠参考线的引入(图 21)。当在 IDE 中重排窗口时,设计图面上将出现可更改的图标,将您引导至可以放置该窗口的区域。如果将鼠标悬停在该图标上,IDE 的相关区域就会变灰,指示如果选择完成此操作该窗口将出现的位置。
类设计器(如图 22 所示)是一种可视化设计工具,用于检查和操作类和其他类型的结构。该工具与设计器所显示类型底层的源代码完全集成;例如,如果更改了一个属性名,该代码文件会自动进行更新以反映此更改。反过来,在源代码中所做的更改也会立即影响到设计器中与其相关联的对象的外观。
编写正确的代码 Visual Studio 2005包含了许多工具 — 一些是对旧功能的增强,一些是新增功能 — 这些工具都是为了一个共同的目标:让开发人员能够更轻松地在设计时正确编写代码。在下面的章节中,我们将介绍 IDE 中的一些重要功能,可使得在 Visual Studio 2005 中编写代码时更少出错。
智能感知增强功能 Microsoft
智能感知技术延续了 Visual Studio 早期版本的主要功能,例如自动跟踪特定类型的最常用成员。另外,对智能感知进行了改进,以包括一个用于选择显示某种类型的所有成员(如图 23 所示)或者只显示其最常用成员的工具。
图 23 智能感知窗口。
如果选择了“All”按钮,则显示该类型中的每个成员(包括隐藏成员)。如果您单击“Common”按钮,则改为只显示该类型中最频繁使用的成员。如果通常只使用一个给定类型(尤其是那些带有许多成员的类型)的一些属性和方法,则在 Common 模式下使用智能感知可以使您在键入代码时更易于定位这些项。
语法错误帮助 Visual Basic 开发环境以前的版本在提供设计时反馈方面一直都与众不同,尤其是当该反馈包含错误的语法时。代码编辑器在含有错误的代码项下面显示一条曲线。将光标放置于该曲线上会显示一个简单描述此问题的工具提示。多年以来,这种设计时语法检查的形式一直是 Visual Studio 的重要功能,而且也确实很有帮助,但是不管该错误描述是否为您提供足够的信息以更正问题,它基本上还是一种“命中或者未命中”的机制。
对于 Visual Studio 2005,Microsoft 也向其中加入了这项功能以便可以立即更正错误。并且该功能使用您所熟悉的与 Visual Studio 以前的版本相同的 UI 行为。如果编写了后台编译器认为是语法错误的代码,在代码编辑器中也会显示相同的曲线。如果将光标悬停在指示有错误的行上,则不仅会显示同样的描述性工具提示,而且还会看到一个小帮助图标。单击该图标会打开一个对话框,该对话框不仅显示了对错误的描述,而且还列出该问题的一个或多个解决方案(请参见图 24)。要实现某个它所建议的修改,只需单击适当的修改。
本文由 设计家园
收集整理
图 24 错误更正对话框。
设计时表达式计算 Visual Studio 2005 中的即时窗口也进行了增强,以便无需执行应用程序就可以测试代码。例如,假定在 Visual Basic .NET 项目中构建了一个类,并且它包含了许多属性和方法。要测试这些代码,可以添加一个窗体或者构建一个控制台包装来对该类进行实例化。当在即时窗口中操作时,可以实例化该类的一个实例,设置该对象的属性,然后调用它的方法。另外,如果在代码中设置了断点,并从即时窗口中调用一个方法或访问一个属性,则执行会在断点处停止并允许您逐句通过代码,就像显式调用了调试器一样。
错误列表和任务列表 Visual Studio 早期版本的用户会发现,原先完全在任务列表中提供的功能现在分布在两个不同的工具窗口中。错误列表是一个新的工具窗口,显示由智能感知引发的语法错误消息和由 Visual Basic .NET 编译器报告的生成错误。Visual Studio 2005 IDE 中任务列表的作用域已被缩减为只显示需要完成工作的提示,例如作为注释插入到代码中的 TODO 任务。
代码片段 代码片段是 Visual Studio 2005 IDE 中另一个激动人心的创新功能。该功能可以向代码编辑器中插入代码模板以执行常见任务。例如,假设要将 Windows 窗体控件中的拖放功能添加到应用程序中。您可能之前在最近的项目中已经编写了此代码,但是要将这段代码提交到内存是不可能的。代码片段让您可以直接从代码编辑器中以可重用的形式获取代码,而不必在一个旧的项目文件中搜寻该代码或者在 MSDN 或 Web 中进行搜索。
Visual Studio 2005 随许多按功能分类的有用代码片段(如图 25 所示)一起安装。其中包括用于读写文件、验证日期或电子邮件字符串格式的代码片段(仅举几例)。
图 25 代码片段。
代码片段也通过作用域进行验证。这意味着,只有在代码中对当前位置合适的代码片段(例如在一个方法或函数内)才在菜单选择中可用。
符号重命名 如果您和许多开发人员一样,那么当开始一个新的 Visual Basic .NET 项目时,您会倾向于使用窗体、控件以及其他代码元素的默认名称。一段时间之后,当应用程序逐渐成形,您就会根据所在组织使用的命名规则来重新命名这些项。如果您的目标是编写专业的代码,这就是一项乏味却又必要的苦差事。符号重命名工具提供了一种简单易用的全局更新名称的方法,有助于减轻重命名代码元素的繁重工作,并降低引入额外语法错误的风险。要在代码编辑器中使用这项功能,可以右键单击代码中的某一项,并从上下文菜单中选择“Rename”,如图 26 所示。
图 26 从代码编辑器访问符号重命名工具。
在“Rename”对话框中,键入该符号的新名称,如图 27 所示。
图 27 重命名对话框。
调试器的增强功能 Visual Studio 2005 提供许多工具来查看调试环境中的数据。其中许多工具(例如 Watch、Locals 和 Autos 窗口)一直用于 Visual Studio 的多个版本。这些工具提供应用程序数据的多个不同视图。但是您仍然可能遇到调试时很难检查数据的情形。在接下来的章节中,我们将探讨调试器环境和工具的增强功能,这些增强功能可以使您更容易地在运行时诊断和更正错误。
DataTip DataTip 一直是一种在调试器中快速查看简单数据类型的好方法。但是,在 Visual Studio 的早期版本中,对于复杂的数据类型,只能看到类型的名称而不是其中包含的数据,如图 28 所示。Visual Studio 2005 中 DataTip 的关键改进是它们现在可以显示复杂数据类型的成员,如图 29 所示。
图 28 简单数据类型。
图 29 复杂数据类型。
DataTip 的另一个增强功能是为简单类型和复杂类型的每个成员提供上下文菜单。该上下文菜单包含以下选项:添加查看所选类型、编辑该类型的值或查看该类型的十六进制值。(请参见图 30。)
图 30 DataTip 选项。
您也可以直接在 DataTip 中编辑成员值,方法是选择该值,然后键入其新值来替换它,如图 31 所示。
图 31 更新成员值。
完成成员变量的更改后,DataTip 会自动显示更新的值,如图 32 所示。
图 32 更新之后的成员值。
Visualizer
Visual Studio 2005 调试器的一个更复杂的数据检查工具是 visualizer。Visualizer 是一个对话框,它将变量或对象以对特定数据类型有意义的方式进行显示。例如,使用 Visual Studio 2005 中包含的四个默认 Visualizer 之一,可以以 HTML、XML 或纯文本的形式可视化字符串变量。
所有各种不同的调试工具 — DataTip、Watch 窗口、Locals 窗口或 Autos 窗口 — 都在可用 Visualizer 查看的数据类型旁边显示一个放大镜图标。单击放大镜可以选择一个 Visualizer 来显示相应对象的数据类型。
除了刚才提及的三个基于文本的 Visualizer 之外,默认情况下还包含一个数据集 Visualizer,使用该 Visualizer 可以更方便地检查数据集中包含的数据。
提示其他 Visualizer 将来可以从 Microsoft 下载获得。
异常助手
异常助手是 Visual Studio 2005 引入的一个新调试工具。当一个运行时异常发生时,它将以一个对话框的形式出现,显示关于该错误的细节。值得一提的是,该异常助手对话框还包括处理异常的故障诊断提示。
该对话框的标题栏显示错误的类型,标题栏下方是对错误的描述。该助手的顶部是故障诊断提示部分,它在大多数情况下都会提供一些指向帮助内容的链接,以帮助您诊断问题。然而,在许多情况下,此助手会为更正错误提供循序渐进指导。
自定义数据显示
Visual Studio 2005 为在调试器中自定义数据显示提供了几个选项。接下来的一节介绍了三种用于操作调试器中显示数据方式的方法。
重写自定义类型的 ToString 方法
要改变调试器中显示的自定义类型的数据,一种最简单的方法是重写基对象 ToString方法,如下所示:
Overrides Function ToString() As String
Return Me.FirstName & ““& Me.LastName
End Function
使用调试器显示属性
其他的情况可能需要对数据如何显示进行更多的控制。您可能想按照不同的方式设置基础数据的格式,或者限制在调试器中显示的数据量。
.NET Framework 为控制数据在调试器中的显示方式提供了三个属性类:
| DebuggerDisplayAttribute应用该属性为调试器数据窗口中的类型添加摘要。例如,下面的代码显示如何向一个自定义数据类型添加摘要:
_
Public Class Associate
Private FullName as String
. . .
End Class
DebuggerDisplayAttribute的构造函数接受字符串格式规范。大括号内的文本表示所包含类的一个属性或方法。请注意,可以使用该类的私有成员和公共成员。
|DebuggerBrowsableAttribute将此属性应用于类中的成员,以控制它是否在调试器中显示。
Public Class Associate
_
Public Property SocialSecurityNumber As String
. . .
End Property
End Class
在前面的伪代码中,将 DebuggerBrowsableAttribute应用于 Associate 类的 Social-SecurityNumber属性将阻止该属性在调试器窗口中显示。
| DebuggerTypeProxyAttribute该属性允许以一个自定义的调试器类型来替换属性化成员,从而提供了极大的灵活性。
_
Public Class Associate
. . .
End Class
DebuggerTypeProxyAttribute构造函数的输入参数指定一个类,此类用作显示该类型数据的代理。作为一种最佳做法,应该将该代理类实现为它所应用的数据类型的一个嵌套内部类。这样,该嵌套类就可以对其所描述的类型的私有成员进行完全访问。
演练
该演练演示如何使用类设计器来构建并可视化地构造一个类的层次结构。
此应用程序是一个类库,用于表示一个虚构的专业服务公司的数据实体。该类代表两种类型的员工实体,一种是 partner,另一种是 associate。
这些实体分别使用 Partner 和 Associate 类在类库中建模。因为它们共享许多公共属性和操作,所以 Partner 和 Associate 类均派生于 Employee 基类,而 Employee 又派生于称为 Person 的其自身的基类。
另外,设计要求 Partner 和 Associate 类可序列化,并且这些类本身在序列化过程中可执行自定义代码。为达到此目标,这两个类均实现 System.Runtime.Serialization命名空间中包含的 ISerializable接口。
抽象的 Employee 类还实现一个名为 IPerks 的自定义接口,该接口包含在项目中。该接口满足此项目的一个设计目标,即提供一种方式以建模不同类别员工的福利,因此该接口的实现对于每个派生于 Employee 类的类型而言均不相同。
包含在项目文件中的是 ClassDiagram1.cd 文件,它由类设计器工具生成。如果在 Visual Studio 2005 的文档窗口中打开此文件,会看到它为类库提供对象层次结构的可视化表示。虽然这个特定的示例相对比较简单,但此关系图可以使您立即理解类库中各种不同类之间的关系。还可以使用类设计器来更改类的任何属性或关系。因为类设计器与 Visual Studio 2005 IDE 紧密集成,所以对关系图中的对象所做的任何更改都会立即反映到基础代码文件中。
小结
Visual Studio 2005 集成开发环境包括许多新的和改进的用于提高工作效率的功能。IDE 还进行了重新设计,从而向开发人员提供对 .NET Framework 组件(如新的设置和资源体系结构)的更直接访问。
上一篇:/news/2007-9/2007924193595649.shtml
本文由 设计家园 收集整理