static)置于类声明中,便可
表示静态类。例如:public sealed class Environment
{
// Keep class from being created
private Environment() { }
}
现在可用下列方式编写:public static sealed class Environment
{
...
}
利用静态类取代上述设计模式的优点,在于如果不慎声明“实例方法”,编译器可报告错误。
编译器增强功能
内嵌警告控制
Whidbey 另一项新功能可让开发人员借助指定的编译器指令,控制是否要报告特定代码区域的警告信息。此指令与 #pragma 语句相当类似。以下
是使用 pragma 关键字的例子,可使编译器针对特定代码块,禁用错误报告。
#pragma warning disable 135
// Disable warning CS135 in this block
#pragma warning restore 135
命令行选项
Whidbey 包含数项编译器新选项。 以下是每种新选项的简要说明
:
/warnaserror:在 Visual Studio .NET 2003 的 warnaserror 命令行选项中,可让开发人员将所有编译器警告皆以错误来处理。在 Whidbey 中,此功能进一步扩充,让开发人员控制是否要将特定的警告视作错误来处理。以下例子示范如何标示 618 之外的所有警告,将之视为错误来处理。
csc /warnaserror /warnaserror-:618?...
另一种方式,则是如下列例子所示,将单一警告标示为错误: csc "/warnaserror:1595 ...
/errorreport:<string>:errorreport 命令行选项控制 Dr. Watson 产生编译器的报告。
有关 Dr. Watson 的详细信息,参见:
www.microsoft.com/technet/prodtechnol/winxppro/proddocs/drwatson_setup.asp
(英文)。
以下为 errorreport 选项可用的参数:
- /errorreport:prompt:此选项显示关于错误信息的对话框。
- /errorreport:send: 此选项指示当编译器发现内部错误时,“毋须”用模式对话框提示用户。不过,编译器仍需继续编译,并传送错误报告。原本出现在
对话框中的文字,将显示在命令行。
- /errorreport:none:此选项指示毋须将错误信息传送至 Microsoft。此行为同样见之于 Visual Studio 2002 与
Visual Studio 2003,是默认选项。
/langversion:<<string>:langversion 命令行选项的主要功能
是启用严格的 ECMA/ISO 一致性。当此选项设为
ISO-1,针对 Whidbey 所有不符合标准的功能,编译器皆报告错误。
/keycontainer、/keyfile、/delaysign:这些选项用来取代同一名称的属性,以便在指派命令行形参时有更大的弹性。
生产力增强功能
重构
C# Whidbey IDE 现在可支持重构。“重构”可让开发人员在重建代码时,自动处理许多常见的工作。有关重构的详细信息,参见:www.refactoring.com
(英文)。
例如,开发人员利用内建的重构支持,可使用重新命名重构,在原始代码中自动重新命名变量的过程。
目前在 Whidbey Technical Preview 中可用的重构功能为:
- 撷取方法
- 重新命名
- 撷取接口
- 封装栏位
- 变更方法签署
- 取代 Arraylist
下图示范如何在代码编辑器中,从上下文菜单中直接使用重构功能。

图一 重构器菜单
调用 [重命名] 重构时,将会出现 [预览变更] 对话框。此对话框列出变量名称在注释或代码中的位置。[预览变更] 对话框的上下文菜单也可让用户直接跳至
引用该变量的原始代码位置。

图二 重命名重构的预览变更
代码展开
代码展开可填补(fill-in-the-blank)代码片断,减少重复性工作的输入动作,并简化在应用程序中加入 foreach 语句等常见构造的过程。开发人员若要存取代码展开功能,可利用
上下文菜单并选取展开,或是直接利用可配置的代码展开快捷键。

图三 代码展开
下面的代码展开例子示范了使用 forr 代码展开,以相反的顺序往返集合。
光标置于醒目提示的黄色文字区域,此处可作为用户配置值的占位符。下面例子中,forr 代码展开使用倒序顺序读取 myList 泛型集合中的每个元素。

图四 forr 代码展开
代码展开为可扩充的 XML 文档,可由用户定制或创建。

图五 "forr" 代码扩充的 XML 格式
格式化
原始代码的格式化因人而异,Visual Studio Whidbey
包含数种选项,可让开发人员自定义和控制原始代码的格式。这些格式化选项包括大括号、间距、换行与对齐。您可以选择让 IDE
自动格式化代码,或仅格式化指定的原始代码区段。如图六所示,它示范了将大括号置于新的一行,并可视化预览所选格式化的选项。

图六 格式化选项与预览窗格
配置文件
虽然开发人员可充分自定义 IDE 的字体、窗口与格式化,但若要与团队成员共享配置,或要将配置转移至其它电脑,则是相当困难的工作。Whidbey
的新增功能可让您轻易地导入与导出 IDE 配置,以便在电脑之间转移,或团队成员彼此共享。

图七 导入与导出配置对话框
增强 IntelliSense
IntelliSense 已增强功能,以便识别泛型类型。在下图中,IntelliSense 了解 myList 代表整数列表,并提供弹出式菜单说明,指出
myList 的 Add 方法期望接受的整型数据类型。

图八 Intellisense 理解泛型类型
IntelliSense 也增强了有关异常处理的能力。加入 try/catch 区块时,catch
处理例程将自动过滤可用的选项,仅显示异常类型的清单。

图九 处理异常的 IntelliSense
IntelliSense 也增强了有关属性的功能。在下列例子中,加入属性时将过滤可用的选项,仅显示属性类型清单。

图十 处理属性的 IntelliSense
用户类型与关键字彩色显示
复审原始代码时,区分类型与关键字最好的方法便是在 IDE 中以不同颜色来显示。Whidbey
的新功能可用特殊的颜色来显示用户类型与关键字,从而加强了原始代码的可读性。

图十一 以不同颜色显示用户类型与关键字
新的生成(Build)系统
Whidbey 的生成系统已大幅加强。新生成系统称为 MSBuild,使用可扩充的机制来描述生成的过程。用户可利用 XML
编写自定义工作,自行建立其生成系统。以下例子示范一个简单的 MSBuild 文档,其编译工作调用 C# 编译器,编译所有扩展名为 .cs 的文件。
- <Project>
<Item Type="Compile" Include="*.cs" />
- <Target Name="Build">
<Task Name="Csc" Sources="@(Compile)" />
</Target>
</Project>
缺省可搜寻隐藏文字
对于 [寻找和替换] 窗口最常见的要求,是希望改变默认设置,以便缺省设置可搜寻已摺叠的文字 (例如,区域内的文字)。在 Visual Studio
2003 中,缺省设置不能搜寻隐藏文字,Whidbey 缺省设置则可搜寻隐藏文字。

图十二 在寻找和替换对话框中搜寻隐藏文字
对象浏览器的改进
开发人员经常使用对象浏览器来检视数据类型,许多开发人员希望加入结果过滤功能。Whidbey
的对象浏览器可让开发人员根据命名空间、对象类型、字母顺序等等条件来过滤与排序数据。

图十三 对象浏览器的改进
更易使用的窗口停靠功能
为了让在 IDE 中更易使用窗口停靠功能,现在提供了透明向导,可用来将窗口停靠于 IDE 的左、右与底端。

图十四 停靠窗口
IDE 的自动存储功能
为了避免遗失信息 (例如,不小心关闭尚未保存修改的文件),IDE 现在可定期自动存储您的工作。若 IDE
当掉,重新启动后,将询问您是否要复原您的工作。

图十五 自动保存文件
变更追踪
变更追踪可让您轻易地看出存储与未存储代码之间的差异。
在下图中,您将发现最左边窗格某些区段的代码以不同颜色来显示。以黄色显示的代码,代表尚未存储的新代码;以绿色显示的代码,代表已存储的新代码。既非黄色也非绿色的代码,代表一开启文件时便已存在的代码。

图十六 变更追踪
新的 Windows Forms 控件
Whidbey 的 Windows Forms 新增数种控件,从改进的数据显示控件 (例如,GridView),到全新的控件,如可播放音乐的
Sound 控件),以及可自定义菜单的 Winbar 控件。

图十七 Winbar 控件
新 Web Forms 控件
ASP.NET 加强了数种功能,可大幅提升开发人员的生产力。这些功能部份包含在 ASP.NET
的新控件类中,例如,“个人化”、“安全性”、“验证”与“浏览”。有关 Visual Studio 对于 Web
开发人员的所有增强功能,参见
msdn.microsoft.com/asp.net/whidbey/ (英文)。
控件对齐
在 Whidbey 中,在设计工具中更容易对齐控件。在下列例子中,当用户拖曳 button 2 时,将出现一组对齐线,以视觉化的方式显示
button 1 如何对齐 button 2。

图十八 对齐控件
控件的智能标签
控件中加入了“智能标签”,用来显示与该控件关联的常见工作,例如,格式化与连接数据源。

图十九 控件的智能标签
建立 Web 项目更快捷
若要在 Whidbey 中建立 Web 项目,不需要先行安装 IIS。只要选取要建立的网站,Visual Studio
可让您在文件共享点建立网站,以便在本机上执行与调试。
Yukon 项目支持
Visual Studio Whidbey 也支持生成 SQL Server 下一版 (代号为 Yukon) 的应用程序。

图二十 建立 SQL Server 的 Yukon 项目
调试工具增强功能
增强 Datatips
在 Visual Studio .NET 2003 的调试模式中,只要将光标置于简单的变量上 (例如,字符串),便可显示变量值。Whidbey
大幅增强此功能,以处理更复杂的类型。在下图中,Datatips 显示复杂类型的信息,并可详细显示该类型的层次信息。

图二十一 增强的 Datatips
可视化工具
在 Visual Studio .NET 2003 中,要在调试工具中检视 Datasets、bitmaps 等复杂类型并不容易。可视化工具可在调试模式中,以
可视化的方式来表示数据。例如,可依下图所示的方式,直接从自动变量窗口(Autos
Window)中选取 XML
可视化工具,以便以可视化的方式来表示 XML 字符串的内容。可视化工具可加以扩充,让开发人员与组件供应商可为自定义类型自行建立可视化的方式。

图二十二 可视化工具选项

图二十三 XML 可视化工具
新的符号服务器选项
若要在 Visual Studio 2003 中使用符号服务器,必须配置如下的系统环境变量:
_NT_SYMBOL_PATH=srv*E:\Cache\Symbols*http://msdn.microsoft.com/download/symbols;
这必须在调试之前执行。在 Whidbey 中,比较容易配置多个符号服务器位置,以及配置本机符号快取的路径。您可以在进入中断模式后再配置符号
服务器,当您知道调试符号尚未载入时,此功能相当有用。

图二十四 符号服务器选项
设计时表达式评估
在 Whidbey 中,即时窗口(Immediate window)可用来在设计时评估表达式,而毋须编译与执行应用程序。 在下面例子中,直接从即时
窗口调用 Add
方法,毋须离开设计时环境。

图二十五 设计时在即时窗口中评估方法
可配置的安全权限
Whidbey 可让开发人员配置不同的安全权限来调试应用程序,简化以不同安全特性认证信息来测试的过程。

图二十六 可配置的安全权限
摘要
Visual Studio Whidbey 建立在 Visual Studio 2002 与 Visual Studio 2003
的成就之上,让开发人员具有更高的生产力。包括新语言构造、编译器功能、生产力增强功能,以及调试工具增强功能等等,使得开发人员能够以更短的时间建立功能更强大的应用
程序,并专注于编写代码。