万千示例尽在你的指尖

[原文发表地址]  A World of Samples at your Fingertips

[原文发表时间] 2012-06-12 0:00

示例是开发人员学习为新的平台开发应用程序的主要方式。我们使用示例作为了解新的 API的起点,当我们在自己的代码中遇到一个bug时,我们参考它们,与之比较,以及与其他人分享,让他们在我们的发现中有所启示。如果一张图片胜过千言万语的话,那么一个示例将胜过数千页的说明。在 Visual Studio 2012 中,我们着手为开发人员提供方便的方式来查找和使用示例,尤其是当构建Windows 8 应用程序时.

首先,让我们看看已有的和计划添加的示例集合。这让事情很快变得明了:我们需要一个更好的存储和更新模型。多年来示例分布在不同的地方,这导致了找到并使用它们变得很困难。我们的目的是将示例从偏僻的网站角落里脱离出来,并放入到一个中心位置,我们创建了一个称为MSDN 代码示例库的单个站点,并介绍了在 Visual Studio 2012中如何轻松找到并使用它们。这篇文章描述了我们的旅程。

示例一直躲在哪儿呢?

发布示例的主要方式之一是通过软件开发工具包或 SDK。SDK 是作为单个媒介来推出工具、文档、标头、库和示例的。与 SDK一起推出示例能够很方便地在一个地方捆绑所有的工具和资产,但你永远不知道当你安装 SDK之后,你将从中获得什么。示例常位于文件系统的某处,有时位于只读位置,例如程序文件,很少有提示告知在何处查找这些示例,或什么是可用的。在您安装大量内容之前,在SDK 中寻找有关示例的信息是不可能的,除非 SDK 作者在线复制其所有的 SDK 内容。更新示例是SDK 的一部分,也是一种挑战,因为这意味着要更新整个 SDK,不用说,SDK中的示例不会经常更新。

发布示例的另一种流行的方式是通过个人和团队博客,作为单个示例或压缩包来发布,然后在线存储。将示例从 SDK中移出来,然后放在网络中是朝往正确方向的一步,但它也有局限性。博客能够灵活地让示例的作者来谈论该示例是做什么的,甚至随着时间的推移而更新详细信息。然而,通过博客或团队站点推出的示例仍然受限于那些站点的可发现能力。博客能灵活地更新示例,但先前下载此示例的用户极可能通过从 Bing 中搜索来找到它,而有可能没有看到更新,除非他们紧紧地关注该博客。

这两种方式的另一项挑战是示例通常需要大量的手动步骤来确保它们可以在开发人员的机器上编译和运行。该示例是如何打包的,以及是否在运行此示例之前,你从所需的 SDK中安装了标头和库,都会让你体验到完全不同的结果。示例的有用性还可能取决于您使用的工具集版本,而且可能不能在不支持该特定项目类型的较旧的工具集版本中运行。

一个示例库

新的MSDN 代码示例库将所有的 Microsoft 示例引入到一个站点中。通过将示例集中于一个站点,我们能够围绕搜索、浏览和管理有用的示例为开发人员创建更丰富的体验。我们还重点确保提交到 MSDN 代码示例库中的示例的高质量来帮助解释新技术和引进新项目。MSDN代码示例库站点上的所有内容都是可以搜索的,所以该站点的用户可以搜索描述性文本的关键字,如"文件访问",或直接指定解决方案的源代码中的API,例如"WriteTextAsync"。也可以搜索爬网程序,所以用户可以通过 web 站点或他们最喜爱的搜索引擎来搜索内容。在MSDN 示例代码库中,优化与筛选器的任何搜索,让其专注于特定的技术平台、编程语言、开发主题或 Visual Studio 版本。

image

每个示例页面都有一个丰富的 HTML 描述,它旨在大体阐述示例中所包含的主题以及如何从该示例中获得最多东西的说明。站点上的示例页面还提供了问与答的可选论坛,你可以在其中与示例作者或其他用户开始对话。使用为每个示例页面提供的评分和审查功能,可以帮助MSDN 代码示例库提供最有用的示例,以及为示例作者提供有价值的反馈和认可。

有些问题只需要少量的代码来演示一个概念。MSDN代码示例库网站还显示了示例的源代码以便您可以浏览和复制你需要的代码段。还涉及到其他问题,在调试器下运行示例有助于了解代码如何运行。当您下载完整的示例时,您会得到一个项目和解决方案。那样您可以在 Visual studio 中打开并运行它。如果你找不到该示例,你可以请求一个新的示例或对Microsoft 或社区上现有要求创建的示例进行投票。

一些开发人员会有针对性地使用示例,只会下载他们所需要的示例,而其他用户则想要获得大量的、往后能够回顾的相关示例。为了给开发人员提供一个选项来抓取一个示例集合,我们在库网站和 Visual Studio 2012 中添加了一个示例包的概念。示例包,如Windows 8 Consumer预览示例包Visual Studio 2010 C# 示例包101 LINQ 示例包作为为特定的技术提供示例引用的一整套集合,在 MSDN 代码示例库中都是可访问的。

MSDN代码示例库站点对任何人都是开放的,并欢迎贡献有帮助的示例贡献一个示例是非常简单的,你只需压缩您的解决方案, 上传到 MSDN 代码示例库中,然后使用技术和主题标记来提供详实的描述。我们的目标是让上传的过程尽可能地简单,因为毕竟这些是示例,上传这些示例不应该比创建它们花费更多的时间。一旦您上传了您的示例,我们自动识别您的目标语言、 Visual Studio 的版本,并将它重新打包,赋予它一个社区许可证和你的描述的脱机副本。我们一直在寻找高质量的代码示例,所以我们鼓励你贡献你的代码示例,在此网站上试一试吧。

从 Visual Studio IDE 中方便地访问示例

你可以直接在 Visual Studio 2012 中浏览、搜索、下载示例库中的示例。在文件 / 新建项目对话框中,您可以在左边面板中的Online选项卡下找到它们:

image

从 Visual Studio 中下载示例有几个额外的好处。Visual Studio 将管理你所下载的示例,并在新建项目对话框中Installed 选项卡下的Samples节点中,保存每一个你所下载的示例的主副本。同时Visual Studio 会创建一个示例的副本,并把它放置在新建项目对话框中以指定名称命名的的新文件夹下的本地路径中。我们将所下载的示例存储了一份副本,因为我们想要确保开发人员可以切回到示例的原始版本,而无需记住他们是在网页中的何处找到它的。我们也想当开发人员没有连接到 web 时,给他们提供一个地方来查找他们所下载的示例。

Visual Studio 还支持MSDN 代码示例库中可用的新的示例包。示例包,像Windows 8 Consumer预览示例包以及个别的示例,都可通过扩展管理器中的Online选项卡来下载。下次当你打开新建项目对话框时,通过扩展管理器下载的示例或示例包将会显示在已安装的示例中。

示例的更新和依赖关系

当Visual Studio 和 MSDN 团队在设计MSDN 代码示例库与 Visual Studio 2012 的整合时,我们为捆绑通过web 服务下载的示例讨论了各种格式。我们考虑了 ZIP 和其他包装技术。我们决定使用VSIX,因为它能够为示例引入两个新功能:更新和 SDK 的依赖关系。

在Visual Studio 2012 中,开发人员下载了一个MSDN 代码示例库中已发布的示例时,每当对已安装的示例的源代码做出更改时,开发人员将获得一个更新通知,无论是作者想要修复该示例中的 bug 还是引入新的功能,此更新能够让作者确保该示例的所有用户都能保持最新的版本,如果他们感兴趣的话。如果该示例不再有用,你可以从工具>扩展管理器-已安装的示例中删除副本。

有时,在 Visual Studio 中加载和编译示例之前,该示例需要开发人员安装一个包括了所需的引用库、标头或项目系统的SDK。使用 VSIX 作为底层的技术能够允许我们在示例和特定 SDK 之间创建依赖性。当你在MSDN 代码示例库中找到一个标记了 SDK 依赖项的示例时,Visual Studio 2012 将在安装示例之前提示您安装 SDK,那样可确保您可以得到可运行的代码。

示例是您可以直接从 Visual Studio 2012 中访问的众多在线资产之一。我们很有兴趣想知道您通过 Visual Studio 使用示例的体验,所以向我们发送您的反馈吧!我们希望这些相连接的体验能在使用 Visual Studio 快速构建应用程序的同时,帮助您找到您正在寻找的解决办法。

祝您编码愉快!