签名窗格
每个在公共语言运行库 (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”。
\n
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。
\n
Visual Studio 2005 IDE 包含许多工具窗口,旨在提高工作效率并减少需要编写的代码数量。本节介绍 Visual Studio 2005 IDE 中用于提高工作效率的一些工具窗口。
代码编辑器
如果对 Visual Studio 以前版本中 C# 代码编辑器的文档功能有所了解,那么您就会发现 Visual Basic .NET 代码编辑器的另一个新功能,它允许自动插入标记以生成 XmlDoc 注释。要使用此功能,可以将光标放置在代码文件中一个成员的上方,然后键入三个单引号。这样就生成如下 XmlDoc 注释标记:
‘‘‘<summary>
\n‘‘‘
\n‘‘‘</summary>
\n‘‘‘<param name=”fireDate”></param>
\n‘‘‘<remarks></remarks>
\nPublic Sub Fire(ByVal fireDate As Date)
\n. . .
\nEnd Sub
\n
\n 虽然多年以来这个功能在 C# 代码编辑器中一直可用(它使用三个正斜杠,而不是单引号),
但是对于 Visual Basic .NET 代码编辑器而言,这仍然是一个适时加入的新功能。
数据预览对话框
数据预览对话框允许预览项目中任何 DataComponent查询返回的数据。
要预览数据,可以从数据设计器窗口打开数据预览对话框(如图 18 所示)。也可以从数据源窗口访问数据预览对话框。
图 18 从数据设计器打开数据预览对话框。
在“Data Preview”对话框中,首先选择要预览的对象。如果该对象是一个带参数的查询,则在该对话框的独立控件中输入
参数值。然后单击“Preview”按钮以执行该查询,结果数据的显示如图 19 所示。
注更改数据库中数据的查询(如 INSERT、UPDATE 和 DELETE 查询)在预览数据对话框中执行时不会影响该数据库。
图 19 数据预览数据对话框。
文档大纲
在 Visual Studio 2005 IDE 的早期版本中,文档大纲窗口通过提供标记层次结构的可视化表示允许您查看 HTML 或 ASPX
页面的结构。该窗口通过使用树视图来显示 HTML 标记、脚本元素以及页面上的控件,可以展开或折叠此树视图以将注意力放在
页面上的特定区域。双击该视图中的任一项,就可以在页面上直接定位到该项的位置。Visual Studio 2005 延续了该功能并进
行了扩展,从而为 Windows 窗体上的元素提供相同的可见性。
用于 Windows 窗体布局的文档大纲窗口(如图 20 所示)为管理窗体上的控件提供一种简单的方法。与文档大纲窗口的
最初导入一样,可以在浏览该大纲时展开和折叠所包含的项。要选择窗体设计器中的一个控件,可以在树视图中单击该项。您可
以合理地推断,既然复杂的控件布局在任何重要的 Windows 窗体应用程序中都很常见 — 该应用程序也可能包含许多深层嵌套
的隐藏组件,或者这两者都有 — 那么相对于仅将其用于简单的 Web 页面编辑而言,将文档大纲扩展为窗体将为开发人员提供
更大的好处。另外,也可以在容器的层次结构内将控件从一个容器拖放到另一个容器。
图 20 文档大纲窗口。
注:重新排列文档大纲窗口中的控件只在 Windows 窗体中可用,而不可用于 Web 页。
\n
对于开发环境而言,另一个值得注意的增强功能是停靠参考线的引入(图 21)。当在 IDE 中重排窗口时,设计图面上将出现可更改的图标,将您引导至可以放置该窗口的区域。如果将鼠标悬停在该图标上,IDE 的相关区域就会变灰,指示如果选择完成此操作该窗口将出现的位置。
图 21 停靠参考线。
类设计器
类设计器(如图 22 所示)是一种可视化设计工具,用于检查和操作类和其他类型的结构。该工具与设计器所显示类型底层的源代码完全集成;例如,如果更改了一个属性名,该代码文件会自动进行更新以反映此更改。反过来,在源代码中所做的更改也会立即影响到设计器中与其相关联的对象的外观。
设计器和代码之间的这种同步编辑关系使可视化地创建和配置 CLR 类型非常简单。
图 22 类设计器。
\n
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)。要实现某个它所建议的修改,只需单击适当的修改。
本文由 设计家园 http://www.dwww.cn 收集整理
图 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。)
\n
图 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
\nReturn Me.FirstName & ““& Me.LastName
\nEnd Function
使用调试器显示属性
其他的情况可能需要对数据如何显示进行更多的控制。您可能想按照不同的方式设置基础数据的格式,或者限制在调试器中显示的数据量。
.NET Framework 为控制数据在调试器中的显示方式提供了三个属性类:
| DebuggerDisplayAttribute应用该属性为调试器数据窗口中的类型添加摘要。例如,下面的代码显示如何向一个自定义数据类型添加摘要:
<DebuggerDisplay(“Associate ( { FullName } “) >_
\nPublic Class Associate
\nPrivate FullName as String
\n. . .
\nEnd Class
\n
DebuggerDisplayAttribute的构造函数接受字符串格式规范。大括号内的文本表示所包含类的一个属性或方法。请注意,可以使用该类的私有成员和公共成员。
|DebuggerBrowsableAttribute将此属性应用于类中的成员,以控制它是否在调试器中显示。
在前面的伪代码中,将 DebuggerBrowsableAttribute应用于 Associate 类的 Social-SecurityNumber属性将阻止该属性在调试器窗口中显示。Public Class Associate
\n<DebuggerBrowsable( False ) > _
\nPublic Property SocialSecurityNumber As String
\n. . .
\nEnd Property
\nEnd Class
\n
| DebuggerTypeProxyAttribute该属性允许以一个自定义的调试器类型来替换属性化成员,从而提供了极大的灵活性。
DebuggerTypeProxyAttribute构造函数的输入参数指定一个类,此类用作显示该类型数据的代理。作为一种最佳做法,应该将该代理类实现为它所应用的数据类型的一个嵌套内部类。这样,该嵌套类就可以对其所描述的类型的私有成员进行完全访问。<DebuggerTypeProxy( GetType( AssociateProxy ) )> _
\nPublic Class Associate
\n. . .
\nEnd Class
\n
演练
该演练演示如何使用类设计器来构建并可视化地构造一个类的层次结构。
此应用程序是一个类库,用于表示一个虚构的专业服务公司的数据实体。该类代表两种类型的员工实体,一种是 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 组件(如新的设置和资源体系结构)的更直接访问。
上一篇:http://www.dwww.cn/news/2007-9/2007924193595649.shtml
本文由 设计家园 http://www.dwww.cn 收集整理\n