UML软件工程组织

Visual Studio 2005集成开发环境图解
出处:MSDN

 Microsoft Visual Studio 2005 包含许多对开发环境新的增强、创新和提高,其目的在于使 Visual Basic .NET 开发人员比以往更加高效。本文探讨其中的一些功能,并且阐述开发人员如何使用它们以更快、更准确地编写代码。

 除其他对 IDE 的“改进”之外,Visual Studio 2005 再次引入了“编辑并继续”,这对经验丰富的 Visual Basic 开发人员而言是个好消息。

 应用程序:IDE 增强功能

 该应用程序演示 Visual Studio 2005 IDE 中的类设计器 — 一个在 Visual Basic .NET 应用程序中可视化设计类层次结构的工具。在考察该应用程序的细节之前,让我们先概要介绍一下 Visual Studio 2005 IDE 中新的或改进的功能。

 配置设置

 如果曾经使用过 Visual Studio 的早期版本,那么您可能会花费一些时间自定义开发环境。您可能已经通过一些试验了解到可以指定工具窗口的位置,或者您可能已经发现 Visual Studio 中的菜单和工具栏是完全可自定义的。您也可以配置键盘映射、项目模板类型和帮助筛选器等。事实上,Visual Studio 使您总是能够将 IDE 元素排列成最适合个人的开发风格。

 Options 对话框

 图1 中显示的 Options 对话框为自定义 Visual Studio 开发环境提供大量的设置类别。默认情况下,Options 对话框显示最常见的设置。要显示所有的可用设置,请选择“Show All Settings”复选框。


 
     图1 Options 对话框。

 在 Visual Studio 2005 发布以前,IDE 自定义的主要不足之处是,无法以可移植的格式保存首选项。如果您必须在另一台计算机上重新创建这些设置,这是非常有用的。使用 Visual Studio 2005,可以稍后或在另一台计算机上快速而轻松地还原个人设置。

 Visual Studio 2005 允许以如下方式使用自定义设置:| 制作当前设置的副本以供另一台计算机使用。| 将设置分发给其他开发人员。| 允许团队对 IDE 的某些元素(例如,代码编辑器)使用相同的设置,而在 IDE 的其他区域内保留个人的自定义。

 如图2 所示,Options 对话框环境设置包括一个 Import/Export Settings 项。Always Save My Settings To This File 文本框中指定的文件在每次关闭 Visual Studio 时都进行更新。它可以是本地文件,也可以是网络文件。在您经常操作两台计算机的情况下,请将该文件设置在两台计算机都可以访问的网络位置,这样能够确保您在两台计算机上均享用相同的 Visual Studio“外观”。另外,每次更改其中一台计算机的设置时,它都会自动在另一台计算机上显示。

 
 
    图2 Import/Export Settings 选项。

 在“Team Settings”部分下,可指定一个 .vssettings 文件来包含在一组开发人员中共享的设置。要理解其用途,不妨考虑以下情况:一个开发团队的所有成员都必须使用 Visual Basic .NET 代码文件相同的缩进和格式化选项。开发人员主管可以配置 Visual Studio 2005 中的格式化选项,然后使用 Import/Export Settings 对话框将这些格式化设置保存到网络共享的 .vssettings 文件中。然后,开发团队的其他成员更新他们的 Visual Studio 配置以使用该团队的设置文件。如果该团队以后决定更改默认值,则开发人员主管可以将新设置导出到相同的文件位置,该团队中的每个成员在他们下次启动 Visual Studio 时都将自动接收到此新设置。

 位于“Importing And Exporting”部分下的“Location”文本框指定一个导出或导入设置的默认位置。下一节描述如何导入和导出设置文件。Import/Export Settings 对话框

 Visual Studio 2005 Tools菜单包含一个 Import/Export Settings 菜单项,用于打开一个管理设置文件的对话框。该对话框提供三个方面的基本功能:

 | 将当前的 IDE 设置导出到一个文件中 | 从文件中导入 IDE 设置 | 将环境重新设置为默认文件中预定义的工作方式

 根据是导出设置还是导入设置,该对话框可以让您分别选择将哪些设置导出到 .vssettings 文件,或者从现有的 .vssettings 文件导入哪些设置。

 注设置类别通常为工具窗口、选项页或 IDE 功能定义设置的逻辑分组。

 图3 显示一个已选中“Export IDE settings to a file”选项的 Import/Export Settings 对话框。在“Choose The Settings To Export”部分下,选择或清除要导出的单个设置或整个设置类别。

   注活动设置由两部分组成:首次启动 Visual Studio 2005 时所选的已安装 .vssettings 文件中预定义的自定义,以及其后进行的任何 IDE 自定义。在每次退出 Visual Studio 时,活动设置会自动保存到 currentsettings.vssettings 文件。

 

      图3 Export IDE 设置。

 对于高度可自定义的开发环境而言,一个明显的劣势是可能会使开发人员无意识地(当然没有人会有意这样做)删除 IDE 的必需功能。例如,可能删除工具栏或菜单中的必需项。或者,由于缺乏经验,将工具窗口重新排列为不可用的布局。在 Visual Studio 的早期版本中,可以还原 IDE 中的单个项(例如,通过转到 Window 菜单并选择 Reset Window Layout 命令)。这些重置工具中的大部分都已转移到 Visual Studio 2005 中。然而,单个重置工具只包含 IDE 功能的一小部分并分散在整个 IDE 中,这让有时查找一个合适的重置工具非常困难。

 如图4 所示,选择“Reset IDE settings”选项,将 IDE 环境更改为在许多预定义设置文件中定义的工作方式,这些预定义的设置文件在“Available Installed Settings Files”部分中列出。这些文件随 Visual Studio 2005 一起安装,其中包括窗口布局、工具栏和菜单命令的特定自定义,这些特定自定义反映面向特定编程语言(如 VB.NET、C++、C#、Web 或 J#)的公共首选项。

 

       图4 重置 IDE 设置。

 提示如果设置处于不能使用 IDE 的状态,或者它们阻止您访问 Import/Export Settings 对话框,则可通过使用重置开关从命令提示处重启 Visual Studio 2005 来还原默认设置,如下所示:devenv /resetsettings

 如果只需重置某些设置类别,则可使用“Import IDE Settings From A File”选项。可以从某个默认设置文件或本地设置文件中选择设置。还可以从 Visual Studio 2005 默认文件夹之外的文件夹中浏览文件。

 例如,在开发团队共享一个设置文件的情况下,该文件可能位于一个网络共享位置。如图 5 所示,一旦选择该文件,标题为“Settings Available To Import”的树视图就会列出存储在该文件中的设置。通过选择或清除列表中显示的项,可以选择要导入的设置。“Import IDE Settings From A File”选项允许您从 .vssettings 文件更改所有或者部分设置。

 

   图5 导入 IDE 设置。

  帮助和社区集成

 Visual Studio 2005 在帮助信息的内容和访问信息的工具方面均有显著提高。这些提高还包括与基于社区的资源更全面的集成。

 过去与现在

 在查看帮助系统中的新功能和改进之前,让我们先从某个角度看看 Visual Studio 的早期版本如何提供获得帮助的途径,并着重说明各种方法的局限性:

 | F1 这充其量也只是个“命中或未命中”的工具。有时 F1 返回正确的答案。而有时它显示动态帮助窗口 — 提供关于“代码和文本编辑器”的帮助,而您很少会在这方面需要帮助。

 | 目录 (TOC) 可以浏览 TOC 的内容树以查找与当前主题无关的主题。然而,虽然有时这可能会获得有用的信息,但也可能即费时又徒劳。

 | 索引在某些情况下,帮助索引仍然是查找有用信息的一个很好的选择。例如,如果已经知道感兴趣的 .NET Framework 类名,索引就会非常奏效。但当查找的是概念性信息时,索引就显得不够了。

 | 搜索搜索的主要缺点是它可能会返回多达五百个按随机顺序排列的结果。

 | 基于Web的搜索虽然结果会随首选搜索引擎的不同而异,但它对许多开发人员而言还是一个可选的帮助工具。它不仅避免了 Visual Studio 早期版本中帮助工具的不足,而且还提供对 Internet 信息的访问。

 Visual Studio 2005 提供对这些工具的重要更新,从而允许您更高效地访问帮助内容,如下所示:

 | F1 对帮助主题中元数据的改进使 F1 可提供更多一致性帮助,即使您不在项目的上下文中。

 | 搜索Visual Studio 早期版本的筛选机制得到了改进,从而使提交的结果可以包含更贴切地匹配搜索条件的主题。另一个重要的改进是,该结果包含动态生成的每个返回项的抽象。

 | 如何实现 (How Do I)如图6 所示,这是一个访问帮助系统的新工具,它显示常见开发人员任务的组织层次结构。对于 Visual Basic .NET 开发人员而言,该工具提供数百个任务,且每个任务都包含技术指导内容和开发人员可以轻松地粘贴到代码编辑器中的示例代码。

 | 帮助收藏夹 Visual Studio 的早期版本包含一个集成的收藏夹工具,但只用于 Internet Explorer 链接。更新的帮助收藏夹工具使您可以保存特定于帮助的收藏,包括搜索查询的参数。

 

    图6 How Do I 工具。

 使用联机帮助内容

 与开发环境的早期版本一样,Visual Studio 2005 提供对 Web 站点(如 CodeGuru 和 Net247)内容的直接访问。这些站点以及其他专注于 .NET 的 Web 站点都是称为 .NETCodeWise社区的组的成员。CodeWise 社区是 Microsoft 发起的 Web 站点社区,提供关于 Microsoft 开发人员工具和技术的独立专业知识。如果您曾经访问过这些站点,您就会了解,该开发人员社区成员的投稿扩展并丰富了静态帮助资源。MSDN 内容的覆盖面很广,而社区内容则补充了其深度以及对于现实的开发人员而言极为重要的领域背景。除了扩展帮助内容并提供额外的代码示例之外,基于社区的 Web 站点还提供了其他资源,例如消息论坛。

 在从 IDE 的早期版本向前发展的过程中,Visual Studio 2005 将来自 CodeWise 社区成员站点的内容直接集成到帮助系统中。例如,从 Visual Studio 2005 搜索关于某个主题(如泛型)的帮助时,该搜索可能会返回一个本地 MSDN 主题的列表、一个 MSDN 联机主题的列表,以及一个 CodeWise 社区站点中相关页面链接的列表。这一创新功能使您可以便捷、直接地访问社区中最新、最流行的代码示例和技术文章,同时还可以显示从 MSDN 获得的全面静态内容。而且,这与执行特殊的基于 Web 的搜索相比更具有优势,因为在后者中,您必须亲自验证找到的信息在技术上是否准确。可以在 Options 对话框的帮助类别中配置联机帮助资源,包括 CodeWise 社区提供程序,如图 7 所示。



    图7 配置联机帮助资源。
  
  项目增强功能

 使用 Visual Studio 2005 时,立刻就能感触到的工作效率增强功能是:创建新项目而不必指定其存储位置。这一改变的灵感来自于开发人员的共同体验,这些开发人员创建用于测试代码或构建原型的项目(这些项目只使用一次)。IDE 使您可以控制是否要保存该项目,而不是将这些项目作为一个新的解决方案提交到磁盘。

 该增强功能的工作方式与在 Microsoft Word 中创建新文档的方式类似,其中,打开一个文档,键入一些文本,打印,然后退出 Word 而无需保存该文档。相同的处理适用于在 Visual Studio 2005 中创建的项目;构建一个新应用程序,在调试器中运行它,添加项目项和资源,甚至在保存之前编译该应用程序。(New Project 对话框如图 8 所示)。和 Word 一样,Visual Studio 2005 先将未保存的文件存放在临时文件存储位置,然后再将它们保存在某个永久位置;或者关闭项目时放弃它们。如果选择放弃,Visual Studio 2005 则从临时存储位置删除该项目以及所有与之相关联的文件。这也称为“零影响”项目。

  图 8 Visual Basic 项目模板。

 Visual Studio 2005 还引入许多新的项目项类型。许多项类型为公共用户界面元素提供模板,包括 Login 窗体、About 框和 Explorer 窗体模板,如图 9 所示。


    图9 项目项类型。

 项目设计器

 在 Visual Studio 的早期版本中,通过使用可从项目菜单访问的对话框,能够操作项目属性。因为对话框是模式化的,所以需要首先打开属性对话框,更改设置,关闭该对话框,然后才能继续处理您的代码。在一个典型的开发周期中,可能会多次返回到该项目属性。您也许会感到奇怪,“如果我将这些属性一直保持打开状态从而实现更容易的访问,难道不好吗?”

 项目设计器满足了对项目属性实现更方便、更统一的访问的需要。在 Visual Studio 2005 中创建一个新项目时,您会发现在解决方案资源管理器中列出一个额外的项目元素,称为 My 项目。(请参见图 10。)打开此项,项目设计器就显示在 IDE 主编辑窗口中。


    图 10 My 项目。

 项目设计器提供对项目属性的非模式化访问,使它们可以像代码文件或窗体设计器一样简单地进行访问。如果 Visual Studio 的早期版本很熟悉,您会注意到,项目设计器窗格合并了过去包含在属性对话框以及 IDE 其他部分中的属性,而其他窗格为 .NET Framework 2.0 引入的功能提供配置工具(如 Click- Once 发布)。

  应用程序窗格

 设计器在应用程序窗格(如图 11 所示)中合并了 Visual Studio 早期版本中属性对话框设置。该窗格还引入一些新项以定义应用程序的行为。一旦打开项目设计器,应用程序窗格就位于 Visual Studio 2005 文档窗口的选项卡中。(另外,还可通过右键单击解决方案资源管理器中的项目并选择“Properties”菜单命令,或选择 Project | <Project Name> Properties 菜单命令打开项目设计器)。

  图11 应用程序窗格。

 下面列出一些新的、更新的设置:

 | 启动对象仍然可以指定一个窗体或 Sub Main 过程作为应用程序的启动对象。项目设计器还包括了一个“Startup With Custom Sub Main”复选框,允许您设计自己的启动例程。另外,Visual Studio 2005 支持包括两种类型的启动事件的 Visual Basic 应用程序事件模型(请参见表 1)。

 | 启用可视化样式该设置默认为启用,它允许应用程序使用主机操作系统上存在的 Windows XP 主题。但是,可能会遇到出现一些情况:应用程序使用了 Windows XP 主题早期版本中的控件,在这种情况下应该禁用 Windows XP 主题以保留想要的应用程序外观。

 | 实现单个实例当多次单击一个特定的 Windows 应用程序(如媒体播放机)时,该应用程序只启动一次。而其他的应用程序(如计算器和记事本等)在每次单击其图标时都会启动此程序的不同实例。选择该设置允许将应用程序的启动行为设置为单个实例,如果没有选中该设置,则应用程序将启动多个实例。

 | 关闭模式该选项确定激发应用程序关闭的事件。例如,对于 Windows 窗体应用程序,可选择在启动窗体关闭或应用程序退出时关闭该应用程序。

 | 初始屏幕该设置允许选择项目中的一个窗体作为初始屏幕。

 | 查看代码单击“View Code”按钮打开 MyEvents.vb代码模块。MyEvents.vb包含部分 MyApplication类(该类在My命名空间中定义)。MyApplication类存在的一个明显目的就是包含应用程序事件的处理程序,如表 1 所述。

 表 1 MyApplication 事件

名称  描述
Startup 应用程序启动时引发
Shutdown 应用程序退出时引发
UnhandledException 应用程序中出现一个未处理的异常时引发
StartupNextInstance 用户试图启动应用程序的另一个实例时引发,该应用程序配置为以单个实例运行
NetworkAvailabilityChanged 基础网络连接的状态发生变化时引发

 管理程序集信息

 在用于 .NET Framework 的 Visual Studio 的早期版本中,通常在 AssemblyInfo.vb 代码文件中管理全局程序集属性。与项目中任何其他代码文件一样,要更改程序集属性,需要在代码编辑器中打开该文件并在必要时更新其属性。下面是 AssemblyInfo.vb 中的一些公共属性:

<Assembly: AssemblyTitle(“IDE Enhancements”)>
<Assembly: AssemblyDescription(“New Visual Studio 2005 IDE features”)>
<Assembly: AssemblyCompany(“Leaf Solutions”)>
<Assembly: AssemblyProduct(“Moving to Visual Studio 2005”)>
<Assembly: AssemblyCopyright(“”)>
<Assembly: AssemblyVersion(“.0.0.0”)>
<Assembly: AssemblyFileVersion(“.0.0.0”)>
<Assembly: ComVisible(False)>

 在 Visual Studio 2005 中,程序集的属性仍然存储在 AssemblyInfo.vb 中,但默认情况下,该文件现在隐藏在解决方案资源管理器中。应用程序窗格通过程序集信息对话框(如图 12 所示)提供对这些属性的访问。该对话框是基本程序集属性的界面,对该对话框中列出项进行的任何更改都会自动写入基础 AssemblyInfo.vb 文件中。(当然,如果愿意,您仍然可以访问基础代码文件并直接进行更改)。

 

 图 12 程序集信息对话框。

  签名窗格

 每个在公共语言运行库 (CLR) 上执行的托管程序集,均由与该程序集相关联的代码访问安全性 (CAS) 权限控制。在执行过程中,CLR 评估程序集请求的权限,然后授予或拒绝这些权限,其部分依据是提供给 CLR 的关于代码标识的证据。作为建立程序集标识的一种方法,签名窗格(如图 13 所示)允许您向项目中添加密钥文件 (.snk) 或存储在密钥容器内的密钥。编译器使用该密钥对程序集以强名称进行签名。为适应开发人员需要开发预发布版本但只能访问公钥的情况,该窗格还提供一个用于启用延迟签名的复选框。

 重要事项对于 ClickOnce 应用程序而言,签名密钥是发布必需的。该密钥用于对应用程序和部署清单进行强名称签名。该主题将在第 8 章“部署应用程序”中详细讨论。



    图13 签名窗格。

 引用窗格

 与 IDE 早期版本一样,仍然可以从项目菜单中访问项目引用和 Web 引用。但是,Visual Studio 2005 在引用窗格中添加了这些项的额外访问点,如图 14 所示。可以使用该引用窗格来管理导入的命名空间、程序集和 Web 服务引用。此可选视图的另一个重要好处是,它将项目引用合并到单个 UI 组件中。该窗格还包含用于以下功能的工具:设置一个或多个引用路径,以及标识未在项目中使用的引用程序集,另外,还可以使用该窗格管理命名空间导入设置。


    图14 引用窗格。

 编译窗格

 除了为每个不同的生成配置设置默认的编译器选项之外,编译窗格(如图 15 所示)还可以为不同的编译条件指定不同的通知行为(如警告、错误或无)。可以使用该窗格设置条件通知选项。


    图15 编译窗格。

 您也可以从此窗格访问生成事件对话框。与 IDE 的早期版本一样,该对话框用于指定预生成和生成后命令行事件,另外还用于指定生成后事件激发的条件。生成后事件执行的条件可以是“Always”、“On Successful Build”或“When The Build Updates The Project Output”。

  MSBuild 集成

 Visual Studio 2005 引入一个新的生成引擎,称为 MSBuild,它在 Visual Studio 2005 IDE 中集成以显著改进生成过程。虽然 MSBuild 在 Visual Studio 2005 IDE 中进行操作,但是对它进行了专门设计,以便可以从命令行执行生成任务。

 资源窗格

 项目设计器的资源窗格为项目提供一个全面的资源管理器。(请参见图 16。)资源类别包括本地化字符串、图像、图标、声音文件和文本文件。可从类别下拉列表访问各种不同的资源类别。例如,要添加一个资源 — 如字符串,只需在用户界面显示的表中键入该资源的名称及其相关联的值即可。

  
    图16 资源窗格。

 另外,对于图像和图标资源,可以添加一个现有的图像或图标文件;或者在开发环境中(请参见图 17)直接创建一个新的图像或图标。


    图17 图标设计器。

 资源和框架的集成

 资源窗格是 IDE 与增强的 .NET Framework 紧密集成的一个很好示例。资源页中管理的项通过 MyResources 模块在 My命名空间代码中自动可用,MyResources 模块包含代码中项目资源的表示。资源窗格中管理的项与基础代码文件之间的同步由强类型资源生成器(一个集成的 Visual Studio 2005 工具)透明地进行管理。当更改资源页中的元素时,该工具会将这些更改写入 MyResources 模块,而后者可以在 MyResources.vb 文件中找到。

 默认情况下,MyResources.vb(以及许多其他自动生成的项目文件)对解决方案资源管理器中的视图是隐藏的。可通过单击 Show All Files 按钮显示解决方案资源管理器中的隐藏文件。

 由强类型资源生成器生成的代码等价于由命令行实用工具 ResGen 生成的输出类。与 ResGen 相比,该实用工具的主要优势在于无需在每次更新资源文件时都运行它;Visual Studio 会自动管理这些更新。

 设置窗格

 一个常见的应用程序开发任务是为存储应用程序和用户设置提供一种机制。这可能包括一些状态信息,例如数据库连接字符串、窗体的位置和大小、工具栏位置和内容的首选项、数据库连接字符串以及 Web 服务的 URL — 以及其他更多的信息。.NET Framework 的早期版本提供了用于存储设置的不同选项。例如,可使用动态属性或者向应用程序配置文件添加自己的内容。.NET Framework 2.0 体现了这些技术的发展。.NET Framework 2.0 引入新的类,用于将应用程序和用户设置作为强类型对象进行管理。这些类通过使用项目设计器中的设置窗格集成到 Visual Studio 2005 IDE。

 功能级别设置窗格本身有许多功能级别。首先,可以为几乎任何符合 CLS 的类型创建设置。它还包括一种用于数据库连接字符串的特殊类型。事实上,当创建一个新的数据库连接时,Visual Studio 会自动将连接字符串添加到项目设置中。用户界面包括一个指定每种设置的名称、其类型以及设置值的输入表。另一个重要的属性是,该设置应用于整个应用程序范围还是应用于单个用户。该表中的一列可以让您将作用域设置为这两个选项之一。

 在大多数开发周期中,应用程序可以部署到许多环境中 — 例如开发、测试、模拟调试以及生产。通常,每个环境需要不同的应用程序设置:数据库连接字符串是一个显而易见的例子,因为您不会在开发中冒险使用一个生产数据库来测试应用程序。为了使管理不同的用户设置更加简单,可以为项目添加一个或多个配置文件。可以使用配置文件工具从现有的配置文件中复制设置,以避免必须为每个配置文件实例重新创建设置的麻烦。

 事实上,在应用程序设计阶段为项目定义设置是一个不错的建议。在开发的早期阶段先大致进行设置。然后,在确定了应用程序设置后,为各个不同的部署环境添加配置文件。要调整某个特定配置文件的设置,可以从下拉列表中选择当前的设置配置文件以激活该配置文件,然后进行相应的更改。

 提示如果使用多个设置配置文件,请记住,设置配置文件和活动的解决方案配置之间并没有直接的关系。在编译时,编译器使用项目设计器中当前处于活动状态的设置配置文件。作为一种最佳做法,请考虑创建与已定义的设置配置文件一致的解决方案配置。

 设置和框架的集成与资源窗格中定义的项一样,Visual Studio 2005 自动提供对设置窗格中管理设置的强类型访问。同时也与项目资源一样,可以通过 My命名空间以编程方式访问设置。然而,虽然在运行时 My.Resources对象只允许对项目资源进行只读访问(因为资源元素在代码中是以只读属性表示的),但 My.Settings对象将用户设置公开为读/写属性,这当然意味着可以在运行时对它们进行更改。

 My.Settings类派生于 ApplicationSettingsBase类。这两者之间的关系为 My.Settings提供两种操作用户设置的方法:一个 Save 方法和一个 Reset 方法。更改用户设置的编程模型非常简单。在代码中,只需更新作为 My.Settings对象的属性公开的用户设置,然后调用 Save 方法保存更改。要将所有的用户设置改回上次保存的设置,请调用 Reset 方法。

 注ApplicationSettingsBase类在 .NET Framework 的许多方面都很重要。例如,它被许多 Windows 窗体控件继承,以提供对控件属性(如大小和位置等等)的运行时访问。该类还提供必要的功能以将运行时对控件属性的更改保存为用户设置。

 My.Settings对象还公开从 ApplicationSettingsBase类继承的事件。这些事件包括 PropertyChanged、SettingChanging 和 SettingsSaving。
 
  新的和改进的工具窗口

 Visual Studio 2005 IDE 包含许多工具窗口,旨在提高工作效率并减少需要编写的代码数量。本节介绍 Visual Studio 2005 IDE 中用于提高工作效率的一些工具窗口。

 代码编辑器

 如果对 Visual Studio 以前版本中 C# 代码编辑器的文档功能有所了解,那么您就会发现 Visual Basic .NET 代码编辑器的另一个新功能,它允许自动插入标记以生成 XmlDoc 注释。要使用此功能,可以将光标放置在代码文件中一个成员的上方,然后键入三个单引号。这样就生成如下 XmlDoc 注释标记:

‘‘‘<summary>
‘‘‘
‘‘‘</summary>
‘‘‘<param name="fireDate"></param>
‘‘‘<remarks></remarks>
Public Sub Fire(ByVal fireDate As Date)
. . .
End Sub
  
  虽然多年以来这个功能在 C# 代码编辑器中一直可用(它使用三个正斜杠,而不是单引号),但是对于 Visual Basic .NET 代码编辑器而言,这仍然是一个适时加入的新功能。

 

   图 18 从数据设计器打开数据预览对话框。

 在“Data Preview”对话框中,首先选择要预览的对象。如果该对象是一个带参数的查询,则在该对话框的独立控件中输入参数值。然后单击“Preview”按钮以执行该查询,结果数据的显示如图 19 所示。

 注更改数据库中数据的查询(如 INSERT、UPDATE 和 DELETE 查询)在预览数据对话框中执行时不会影响该数据库。

 数据预览对话框

 数据预览对话框允许预览项目中任何 DataComponent查询返回的数据。要预览数据,可以从数据设计器窗口打开数据预览对话框(如图 18 所示)。也可以从数据源窗口访问数据预览对话框。

 

   图 19 数据预览数据对话框。

 文档大纲

 在 Visual Studio 2005 IDE 的早期版本中,文档大纲窗口通过提供标记层次结构的可视化表示允许您查看 HTML 或 ASPX 页面的结构。该窗口通过使用树视图来显示 HTML 标记、脚本元素以及页面上的控件,可以展开或折叠此树视图以将注意力放在页面上的特定区域。双击该视图中的任一项,就可以在页面上直接定位到该项的位置。Visual Studio 2005 延续了该功能并进行了扩展,从而为 Windows 窗体上的元素提供相同的可见性。

 用于 Windows 窗体布局的文档大纲窗口(如图 20 所示)为管理窗体上的控件提供一种简单的方法。与文档大纲窗口的最初导入一样,可以在浏览该大纲时展开和折叠所包含的项。要选择窗体设计器中的一个控件,可以在树视图中单击该项。您可以合理地推断,既然复杂的控件布局在任何重要的 Windows 窗体应用程序中都很常见 — 该应用程序也可能包含许多深层嵌套的隐藏组件,或者这两者都有 — 那么相对于仅将其用于简单的 Web 页面编辑而言,将文档大纲扩展为窗体将为开发人员提供更大的好处。另外,也可以在容器的层次结构内将控件从一个容器拖放到另一个容器。


      图 20 文档大纲窗口。

 注:重新排列文档大纲窗口中的控件只在 Windows 窗体中可用,而不可用于 Web 页。

  窗口停靠的增强功能

 对于开发环境而言,另一个值得注意的增强功能是停靠参考线的引入(图 21)。当在 IDE 中重排窗口时,设计图面上将出现可更改的图标,将您引导至可以放置该窗口的区域。如果将鼠标悬停在该图标上,IDE 的相关区域就会变灰,指示如果选择完成此操作该窗口将出现的位置。
         图 21 停靠参考线。

 类设计器

 类设计器(如图 22 所示)是一种可视化设计工具,用于检查和操作类和其他类型的结构。该工具与设计器所显示类型底层的源代码完全集成;例如,如果更改了一个属性名,该代码文件会自动进行更新以反映此更改。反过来,在源代码中所做的更改也会立即影响到设计器中与其相关联的对象的外观。

 设计器和代码之间的这种同步编辑关系使可视化地创建和配置 CLR 类型非常简单。


      图 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应用该属性为调试器数据窗口中的类型添加摘要。例如,下面的代码显示如何向一个自定义数据类型添加摘要:
  <DebuggerDisplay(“Associate ( { FullName } “) >_
  Public Class Associate
  Private FullName as String
  . . .
  End Class

  DebuggerDisplayAttribute的构造函数接受字符串格式规范。大括号内的文本表示所包含类的一个属性或方法。请注意,可以使用该类的私有成员和公共成员。

 |DebuggerBrowsableAttribute将此属性应用于类中的成员,以控制它是否在调试器中显示。

 Public Class Associate
  <DebuggerBrowsable( False ) > _
  Public Property SocialSecurityNumber As String
  . . .
  End Property
  End Class

  在前面的伪代码中,将 DebuggerBrowsableAttribute应用于 Associate 类的 Social-SecurityNumber属性将阻止该属性在调试器窗口中显示。

 | DebuggerTypeProxyAttribute该属性允许以一个自定义的调试器类型来替换属性化成员,从而提供了极大的灵活性。

 <DebuggerTypeProxy( GetType( AssociateProxy ) )> _
  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 组件(如新的设置和资源体系结构)的更直接访问。

 

版权所有:UML软件工程组织