再谈MSDN Library For Visual Studio 2010
在今年4月Visual Studio 2010正式版刚刚发布时,我写了一篇《MSDN for 2010的那些麻烦事》,介绍新的Visual Studio帮助系统给开发者所带来的不便。时隔半年,情况终于有了改观,本文介绍如何使用几个工具来解决“那些麻烦事”。
1 MSDN文档的“断点续传”问题
由于MSDN文档的庞大,下载它需要相当长的时间,而Visual Studio 2010默认提供的“Help Library Manager”中最让人恼火的也是下载。
“Help Library Manager”使用了一个名为“BITS(Background Intelligent Transfer Service)”的服务完成下载任务,此服务仅使用空闲网络带宽在后台传送文件,这意味着它的“优先级”非常低,只要计算机上还有一个应用程序(比如迅雷)正在访问互联网,BITS的下载任务就几乎“停滞”了,这意味着更长的下载时间,几百MB的内容可能要下一整天。
让事情更加麻烦的是,由于周鸿祎先生采取的免费战略相当有效,许多朋友都安装了360安全卫士,此软件会提示用户为了提升计算机启动速度,应“禁止”此服务:
如果您听了周先生的建议禁掉了这个服务,这将导致“Help Library Manager”不能完成下载任务,报告:
另外,最让人生气的是“Help Library Manager”不支持断点续传。因此,假设在这个漫长的等待中有几次断网,你不得不从头再来。
老外也发现了这个问题,就开发了一个名为“Visual Studio 2010 Help Downloader(http://vshelpdownloader.codeplex.com/)”的软件实现断点续传。运行此软件,点击“Load Books”按钮可以提取MSDN在线文档内容,在右下角选“zh-CN”可以只过滤查看中文内容,最下的一个文本框可以选择文档保存的文件夹:
这一软件最大的好处是:你可以随时关闭它,当再次运行时,只要选择同样的“书”,它会直接从上次下载的地方开始继续下载。
可以在硬盘上为需要下载的每本书建立一个文件夹,然后同时运行多个“Visual Studio 2010 Help Downloader”并行下载,而每个任务都支持断点续传,这是推荐的使用方式。
下载完毕之后,使用“Help Library Manager”的“Install content from disk”,就可以从下载文件夹中安装。
2 MSDN文档无索引问题
Visual Studio 2010新提供的文档系统,在使用体验上与Visual Studio 2008相比,实在是一个大倒退,最让人生气的是以下几点:
(1)它不提供索引,只能通过搜索查找信息,而搜索给出的信息又不全,这让信息查询工作变得很困难。
(2)它左边的目录树只能显示当前的节点及子节点,看不到其兄弟节点,这非常不利于浏览文档。
针对第1个问题,有一个名为“Microsoft Helper Viewer Power Tool(http://code.msdn.microsoft.com/HelpViewerPowerTool)”的工具可以解决。
这一工具能很好地与Visual Studio 2010相互集成,并终于给文档添加了一个“索引(Index)”卡片。
这一工具其实是在网页上嵌入了一个Silverlight用户控件实现的,因此,计算机上需要安装Silverlight,不过,这根本不是个问题:有哪个使用Visual Studio 2010的人会不装Silverlight?
但这一工具不能解决第2个显示完整目录树的问题。在这个方面表现最优秀的是H3Viewer,可以在Visual Studio 2010的“Extension Manager(扩展管理器)”中找到并下载安装:
这一软件完全实现了与Visual Studio 2008相同的使用体验,非常好用,还别出心裁地提供了一个 “朗读”功能,大家不妨可以用它来练练听力。
但这一软件同样存在问题:
(1)我发现它不能与Visual Studio 2010集成,默认情况下,在Visual Studio 2010中压F1键,仍然会调用最早的那个超级难用的文档系统。
(2)它无法与前面介绍的“Microsoft Helper Viewer Power Tool”工具和平共处。
如果在一台计算机上同时安装了这两个软件,H3Viewer将无法正常工作,并且在关闭时会报告内存存取冲突,不得不使用任务管理器来强行结束它。
希望终有一天这两个工具都能“和平共处”。
也许,微软官方会推出一个能与Visual Studio 2010完美集成,并且其功能不弱于Visual Studio 2008的全新的在线文档帮助系统以彻底解决这个问题。个人觉得,这一系统应该使用Silverlight来开发比较合适。
扩展阅读:1.金旭亮老师文章——《.NET 4.0面向对象编程漫谈》http://book.douban.com/subject/5301287/