程序员眼中的Visual Studio .NET "Whidbey"
Sean "Early" Campbell
Scott "Adopter" Swigart
3 Leaf
December 2003
概述: 这篇文章介绍了即将面世的Visual Studio .NET Whidbey中10个最激动人心的特性(12 页打印纸)
内容
导出IDE设置(Exporting IDE Settings)
数据监视改进(Data Inspection Improvements)
停泊窗口改进(Docking Window Changes)
关于Web开发的改进(What About Web Development)
概述
在这篇文章里,你将了解一些Visual Studio? .NET "Whidbey"的新特性,以及这些新特性将如何使得编码变得更加有效率,Visual Studio? .NET "Whidbey"将要带来的这些令人震惊的新特性我们分为了最激动人心的10个特性详细描述以及其他特性的一些概述。
最激动人心的10个新特性The Top 10
在我们这些程序员看来,Visual Studio? .NET "Whidbey"中下面的这些特性将是最激动人心的10个特性。
导出IDE配置 Exporting IDE Settings
数据监视改进 Data Inspection Improvements
那么废话少说,让我们开始巡礼这些新特性。
重构 Refactoring
XP编程的重要原则就是经常的重构代码。有了这个模式,你写代码将变的快速并且可重复,但是为了避免让你的代码变成一团乱麻,你必须经常的重构。换句话说,修改你代码就象“拉出一大段代码变成自己的方法”,或者说“改变一个成员变量为一个属性”。重构使得这样的操作变的非常简单,如下图1。

图1. VS.NET中预览版中重构的例子 Example of refactoring in previous versions of Visual Studio .NET
private String userName;
public String UserName
{
get
{
return userName;
}
set
{
userName = value;
}
}
你还可以高亮一部分的代码并且一起重构成他们自己的方法,在原来的地方留下一个方法调用。但是,可能重构对我们来说最有用的方式是重命名变量,特别是在重命名一个控件的时候特别有用。当重命名的时候,如果重构系统还能提供修改预览那就真的是非常智能了:),如下图2所示。

图2. 修改预览窗口 Preview Changes dialog box
在今年的PDC大会上,重构只是C#的新特性,但是,微软已经声明,也将在Visual Basic中添加重构的一些形式。(译者按:重构的功能在JBuilder等Java的IDE中也已经实现的很好了。)
编辑后继续运行 Edit and Continue
Visual Basic一直以来都是被认为快速开发(RAD)的良器。一个关键的特性关于Visual Basic的是能够在运行的时候修改运行时错误。在Visual Basic .NET1.0 和Visual Basic .NET 1.1,这个强大的功能却没有了。你应该非常高兴的了解到,这个特性又将重新回到Whidbey的Visual Basic中来。如果你在运行的时候发生了一个运行时异常,你将得到一个异常帮助来提供修改这样的异常的小技巧,但更重要的时候,你可以修改代码,按F5键,他就能从你刚才中断的地方继续运行下去。(译者按:这个功能就如同Java中的HotSpot一样,提供智能的更新,因为本质上,Visual Basic.NET和Java已经是一样的了。)
这就和在使用Visual Basic6.0一样,你可以修改执行点,这样就可以控制当你重新继续运行的时候回到哪里继续。只有当你作了一个Rude Edit的时候,这样的功能才会失效,实质上就是说你的修改不能整合到正在运行的代码中去(Visual Basic 6.0中还可以在作了Rude Edit后中止运行,所以这个特性不能算新特性了)。
另外一个不好的消息是C#还没有这样的功能。这个功能目前只有在Visual Basic .NET中才有,并且还没有什么消息说这样的特性将会被添加到C#中去。
一次点击 ClickOnce
如果你曾经用过.NET Framework 1.0和1.1中的href-exes,那么你就可能知道了在发布这样一个应用的时候有多少麻烦。Href-exes也被认为是“不可去碰的发布”或者“零冲击发布”,本质上来说,在.NET Framework 1.0/1.1中,你可以通过下面这样的方法发布一个应用程序到Web服务器,并且允许用户通过点击下面的超链接来运行你的应用程序:
<a href="someapp.exe">You can run me by clicking this link</a>
当用户点击了链接,这个应用程序就会下载到他们的Internet文件缓存中,并运行这个程序。为了使得这样的功能不至于成为一个巨大的安全漏洞,这个应用程序的权限会被严厉的限制在URL上(Intranet上这样的程序会有不同于Internet上的限制),或者换句话说,这就意味这一些应用程序不再需要用传统的方法发布,不再需要setup.exe或者Windows安装文件。
但是为了这样的特性,href-exes应用程序有很大的限制。首先,在客户端机器上必须安装了.NET Framework 。没有什么办法能让一个没有.NET Framework 环境的客户端在运行的时候自动下载这个.NET Framework 。并且大部分的程序由一个main.exe和一群的assembly文件。在href-exes中,assembly文件是按需下载的,这对一组Intranet应用程序来说是好的,但是没有办法能一次性的下载所有的文件,使得你能安全的离线使用。还有一些其他的问题,比如说对版本的有限支持,这样的应用程序不会被记录到“添加/删除程序列表”中去的,并且没有在开始菜单中的快捷方式。
在VS.NET Whidbey中用一次点击(ClickOnce)发布模式给href-exes带来了一个巨大的飞跃,一次点击和过去href-exes程序发布有了几个显著的不同。
首先一次点击的程序是会自动更新的。有了href-exes 你可以使得应用程序通过自动更新来使用特定部分的代码或者控件,比如.NET Application Updater 控件。有了一次点击,更新也能是定制的或者可选的。一次点击这样魔术般的运行方式是通过两个XML表征文件。一个叫做applicaion manifest(应用程序表征),另外一个叫做deployment manifest(发布表征). 应用程序表征文件标书了应用程序自身,包括了一些应用程序assembly信息,依赖关系和弥补程序的文件的内容。这个文件同时也声明了需要的权限,和更新的路径。发布表征联系着应用程序表征和其他文件的路径,并且指示客户端应该运行哪个版本的应用程序。
当应用程序通过一次运行安装的时候,他们会在开始菜单中出现并且可以通过“添加/删除程序”来卸载。你还可以控制什么时候应用程序应该去检查更新。选项还包括系统启动时候或者程序运行时候。你还可以恐慌子是否将整个程序下载(这是一个使得离线应用的很好的选项),或者是按需下载。
如果你想在Visual Studio中让一个应用程序可以通过一次点击来安装,请用右键点击项目并选择发布项目,你会被首先问到是不是通过一个FTP,一个HTTP站点,一个共享文件夹或者一个本地路径来发布程序。下一步你将会选择是否允许离线运行这个程序,如图3所示。

图 3. 一次点击发布向导 ClickOnce Publish Wizard
一旦应用程序被发布了,IE就会打开一个窗口并且让你测试发布,如图4。

图4. IE测试环境 Internet Explorer test environment
你可以看到,一个必须环境的链接也会同时提供给没有运行环境的用户来下载.NET Framework。
智能标签 Smart Tags
当你开始使用Visual Studio .NET Whidbey的时候,你会发现他会收缩智能标签,如图5。

图5. Visual Studio .NET Whidbey中的智能标签 Smart tags in Visual Studio .NET Whidbey
这就使得你可以不用经常的切换于工作环境和属性窗口或者菜单,就能访问信息和一些常用的任务。
代码片 Code Snippets
很少有比一个好的范例代码更有用的东西了,所以当.NET Framework1.0发布以后,很多的开发人员迅速的喜欢上一起随Framework SDK发布的Quickstarts。他们有了非常好的代码能指引他们迅速的迈向.NET。
除了quickstarts以外,帮助文档中许多类也包含了大量的范例代码。虽然这些代码有特殊的用途,这些代码都是用于一些特殊的用途的。有了代码片,你可以插入一个泛型“模板”代码,而你需要做的事情只是将代码段中的空白地方添上你的代码就可以了。你可以通过在代码窗口点击右键,在上下文菜单中选择Insert snippets,如图6所示。

图6. 插入一个代码片 Inserting a code snippet
有访问注册表,操作字符串,操作文本文件等等的代码片。
如果你想共享一段代码片或者创建一个自己的代码片怎么办?首先你需要访问你机器上的这个地方:
c:\Program Files\Microsoft Visual Studio .NET Whidbey\Common7\IDE\Visual Basic Snippets
在这个目录里面,你会发现一个和菜单中结构类似的目录结构。一个需要小心的地方是,只有这个目录下的一层文件夹是可以被识别成IDE的(译者按:这也很好理解,如果你创建了一个目录层次很深的代码片,会使得IDE非常难看)。下一步,你需要拷贝一个现有文件到当前目录,并且用一个文本编辑器打开这个文件。一旦这个文件打开了,你就会发现,这个文件是用XML格式组织的。
如果你要创建一个新的代码片,所有需要做的工作就是修改这个代码片文件。你甚至可以创建一个代码片能让开发人员简单的用Tab键切换各个需要输入代码的地方。如果要这样做,你只要按照现有代码片中的<declarations> 元素一样做就可以了。
注意:这个特性现在只有在Visual Basic .NET项目中才有。
导出IDE的设定 Exporting IDE Settings
经常你要重新安装你笔记本上的操作系统,并且重新设置这些你曾经精心设定的开发环境参数。有了Whidbey以后,合并和保存这些设定将是一个非常简单的工作,你只要点击Tool菜单下的Import/Export Setting。你会打开一个包含三个选择的向导。第一个选择是导出现有IDE的设定,第二个是导入IDE的设定,第三个是重新恢复IDE的设定到初始安装状态。
提到这个东西还有一个不是很明显原因,当安装Whidbey的时候,会让你选择你是一个Visual Basic或者C#或者C++ 的开发人员,这样会设定一些不同语言的不同设定。比如在Visual Basic中单步调试是用的F8键,而在C#中是F10键,当然所有的这些都可以在安装后按照你的喜好重新设定。稍微注意下,你不难发现一些没有checkbox可以让你非常简单的收缩这些现有的设定。但是你可以看到一些现有语言的预先设定,如图7。

图7. 导入期望语言的设定 Importing settings for a desired language
修改行标记 Line Revision Marks
修改行标记允许你看到你在编写代码过程中修改过的行。当在IDE中写代码的时候,你会发现作代码窗口左边会有一些黄的或者绿的行绘出。用绿色行表示相应的几行代码在上次保存之前修改的;用黄色行表示在上次保存后做的修改。这个特性使得你能判断你的项目中某个文件的状态。
现在如果你不喜欢黄色和绿色怎么办?你只要到Tool菜单下的Options中选择Show All Settings,展开Environment项后,选择Fonts and Colors项。最后圈到最后的Display Items框中,可以看到Track Changes after Save和Track changes befor Save项,这样你就可以修改成你喜欢的颜色了。
临时项目 Temporary Projects
你是不是经常发现你已经有一个WindowsApplication53 的项目在硬盘上了?"真的?",“从哪里来的?”你不禁会问。用过Visual Studio .NET 2002 或者Visual Studio .NET 2003的用户就会发现,这两个版本的IDE都会创建一个固定的项目来保存开发人员临时的一些想法,这就是WindowsApplication53 问题。
在这个新版本的Visual Studio.NET中,你就不用担心这个会再发生了,Visual Studio .NET Whidbey在你没有点击保存项目的时候是不会保存项目文件的。如果你关闭IDE,他还会提醒你是保存这个项目还是抛弃。
非常令人好奇的是这些项目,这些被认为是临时的项目是保存在哪里的,你可以看看下面这个路径:
C:\Documents and Settings\[Your Profile Name]\Local Settings\Application Data\Zero Impact Projects
你可以在C#和Visual Basic.NET中都找到这功能。
数据监视改进 Data Inspection Improvements
当用以前的VS.NET版本调试的时候,有的时候在IDE中想看个变量或者属性或者对象的值却非常困难,如果你想看的东西很大或者包含XML的话。有了Whidbey,你就可以非常轻松的用内建的可视化工具看这些数据。当点击一个Locals窗口中的变量的时候,你可以选择三种方式视图模式中的一种,你可以在一个独立的窗口用文本,或者HTML或者XML的方式来查看这些变量。这就使得如果变量值是HTML或者XML的时候或者很长的字符串的时候看起来更加的方便。
停泊窗口的改进 Docking Window Changes
如果你用过以前版本的VS.NET,你可能发现你有的时候会非常郁闷,因为当你想放一个窗口到指定位置的时候,他却不听话。在Whidbey版本的VS.NET中就可以用导向盘准确的看到窗口会被放到哪里。
当你拖动一个窗口的时候,你会发现一个半透明的导向盘会出现,会指引将会放成什么什么样子(译者按:我觉得这个功能非常的贴心)。

图8. 停泊窗口 Docking window
你可以看到,你能非常简单的将窗口停泊到任何一边,或者你想让窗口变到Tab群中,你只要将窗口拖动到导向盘的中间。
有关Web开发 What About Web Development?
当你开始用Visual Studio .NET Whidbey进行开发的时候,你第一个想知道的事情可能就是Web项目到哪里去了?如果你从标准的File菜单选择New Project,你就看不到Web项目列在标准项目类型中了。那是因为你将从IDE以外的另外一套工具中创建Web项目。为了取得该工具,你可以访问File菜单下的New Web Site。关于这个工具的深入讨论不是本文的主题。如果想知道更多的关于Web开发,你可以使用相关话题在MSDN中搜索,或者看一下MSDN中其他一些关于Web开发方面的文章
其他特性 Other Features
异常助手Exception helper: 一个异常从你的代码中冒出来的时候,异常处理助手就会冒出来给你一些帮助处理异常的信息,同时还有一些如何以后避免这些异常的信息。

图9. 异常处理助手 Exception handler bubble
自动保存和恢复 Auto-Save and Restore: 有了Visual Studio .NET Whidbey,你可以在工作的时候自动的保存你的项目。如果Visual Studio .NET 死掉了或者放弃了,你还可以恢复你的工作(译者注:这个也非常有用,经常会出现费了老大力气写的代码却因为IDE死掉了而作废)。
整合的编译过程 Build process integration: MSBuild是一个全新的基于XML的命令行编辑工具(和UNIX中的make有点类似)。连Visual Studio .NET 本身编译也是用这个工具的。根据微软Alex Kipman 的说法:“在未来的18个月里面,我们将探索用这个工具来编译所有Windows,Visual Studio .NET和.NET framework的可能性与可行性。虽然这个项目仍然在初期阶段,但是我们的小组的目标是让MSBuild具有高度的平滑性和可伸缩性,使得大家都能用来编译类似Windows,Visual Studio 或者.NET FX这样庞大的项目。”
单项目,Solution管理器不出现 Solution Explorer not needed for stand-alone projects: 当用Visual Studio .NET Whidbey 进行开发的时候,除非你开发的是多项目组织在一起的大项目,否则Solution管理器是不会出现的。
任务列表改变 Task list changes: 在Visual Studio .NET Whidbey中的任务管理器有很多新添加的特性。多行文本现在能被正常的显示,各个列能通过简单的点击列名来排序,并且能通过拖拽来移动列。
“唯我代码”调试 "Just my code" debugging: 通过Visual Studio .NET Whidbey,你将可以简单的只是调试你自己的代码,而略过设计器自动产生的代码。这样带来的最大的好处是你可以只关心你写的代码,你也通过在Tools菜单下的Options来关闭这个特性。
总结 Summary
基于这些特性,你可以发现Visual Studio .NET Whidbey是一个增值的,但意义非凡的发布,他将极大的提高开发效率。Visual Studio .NET 2003是一个对IDE的良好调整,Visual Studio .NET Whidbey提供了强大的驾驭IDE的能力。
Sean Campbell and Scott Swigart are Sr. Principals of 3 Leaf. At 3 Leaf, Sean and Scott spend their time analyzing how emerging technologies can be used when building solutions. With this knowledge, 3 Leaf helps companies successfully integrate new technologies into their business, through a variety of consulting, mentoring, and training services. For the companies that are inventing emerging technologies, 3 Leaf builds highly technical content that user of that technology can utilize when doing real implementations. You can contact Sean and Scott at sean@3leaf.com, scott@3leaf.com, or through the 3 Leaf Web site at http://www.3leaf.com/.