53

Tsinghua · 轻型模块化安装:全新安装程序可优化,确保只选择自己所需的模块。 功能强大的编码工具:用各种语言轻松自如地编码,快速查找和修复代码问题,并轻松进行重构。

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

  • .NET 开发经典名著

    Visual Studio 2017 高级编程

    (第 7 版)

    [美] 布鲁斯·约翰逊(Bruce Johnson) 著

    李立新 译

    北 京

  • Bruce Johnson Professional Visual Studio 2017 EISBN:978-1-119-40458-3 Copyright © 2018 by John Wiley & Sons, Inc., Indianapolis, Indiana All Rights Reserved. This translation published under license. Trademarks: Wiley, the Wiley logo, Wrox, the Wrox logo, Programmer to Programmer, and related trade dress are trademarks or registered trademarks of John Wiley & Sons, Inc. and/or its affiliates, in the United States and other countries, and may not be used without written permission. Visual Studio is a registered trademark of Microsoft Corporation. All other trademarks are the property of their respective owners. John Wiley & Sons, Inc., is not associated with any product or vendor mentioned in this book.

    本书中文简体字版由 Wiley Publishing, Inc. 授权清华大学出版社出版。未经出版者书面许可,不得以任何方式复制或抄袭本书内容。

    北京市版权局著作权合同登记号 图字:01-2018-1001

    Copies of this book sold without a Wiley sticker on the cover are unauthorized and illegal.

    本书封面贴有 Wiley 公司防伪标签,无标签者不得销售。 版权所有,侵权必究。侵权举报电话:010-62782989 13701121933

    图书在版编目(CIP)数据

    Visual Studio 2017 高级编程(第 7 版) / (美)布鲁斯·约翰逊(Bruce Johnson)著;李立新 译. —北京:清华大学出版社,2018

    (.NET 开发经典名著) 书名原文:Professional Visual Studio 2017 ISBN 978-7-302-50633-1

    Ⅰ. ①V… Ⅱ. ①布… ②李… Ⅲ. ①程序语言-程序设计 Ⅳ. ①TP312

    中国版本图书馆 CIP 数据核字(2018)第 158340 号

    责任编辑:王 军 韩宏志 装帧设计:孔祥峰

    责任校对:成凤进

    责任印制:李红英

    出版发行:清华大学出版社 网 址:http://www.tup.com.cn,http://www.wqbook.com 地 址:北京清华大学学研大厦 A 座 邮 编:100084 社 总 机:010-62770175 邮 购:010-62786544 投稿与读者服务:010-62776969, [email protected] 质量反馈:010-62772015, [email protected]

    印 装 者:清华大学印刷厂 经 销:全国新华书店 开 本:190mm×260mm 印 张:33.75 字 数:1217 千字 版 次:2018 年 8 月第 1 版 印 次:2018 年 8 月第 1 次印刷 定 价:99.80 元 —————————————————————————————————————————————— 产品编号:078953-01

  • 译 者 序

    Microsoft Visual Studio 是一个综合性产品,适用于希望升级和创建精彩应用程序的组织、团队和开发人员。Microsoft Visual Studio 包含大量有助于提高编程效率的新功能以及专用于跨平台开发的新工具,如 UML、代码管控、IDE 等。Visual Studio 是目前最流行的程序集成开发环境之一,最新版本 Visual Studio 2017 基于.NET Framework 4.5.2。

    Visual Studio 2017 的特点如下: ● Code Snippet Editor:这是一个第三方工具,用于在 Visual Basic 中创建代码片段。Code Snippet Editor 工

    具参见第 8 章。 ● 灵活性:生成面向所有平台的应用。 ● 高效:将设计器、编辑器、调试器和探查器集于一身。 ● 完整的生态系统:可访问数千个扩展,还可利用合作伙伴和社区提供的工具、控件和模板,对 Visual Studio

    进行自定义和扩展。 ● 兼容各种语言:采用 C#、Visual Basic、F#、C++、HTML、JavaScript、TypeScript、Python 等进行编码。 ● 轻型模块化安装:全新安装程序可优化,确保只选择自己所需的模块。 ● 功能强大的编码工具:用各种语言轻松自如地编码,快速查找和修复代码问题,并轻松进行重构。 ● 高级调试:进行调试,快速找到并修复 bug。用分析工具找到和诊断性能问题。 ● 设备应用:适用于 Apache Cordova、Xamarin 和 Unity 的工具。 ● Web 工具:可使用 ASP.NET、Node.js、Python 和 JavaScript 进行 Web 开发。可使用 AngularJS、jQuery、

    Bootstrap、Django 和 Backbone.js 等功能强大的 Web 框架。 ● Git 集成:在 GitHub 等提供商托管的 Git 存储库中管理源代码。也可使用 Visual Studio Team Services 管理

    整个项目的代码、bug 和工作项。

    登录到 Visual Studio Community,即可访问丰富的免费开发工具和资源。 本书内容丰富、概念清晰,采用以 IDE 为中心的新颖方法揭示 Visual Studio 2017 的诸多秘密,详细介绍 Visual

    Studio 2017 的基础知识、编程方法及技巧,力求将最新、最全面、最实用的技术展现给读者,是开发新手和从早期版本升级的开发人员必备的参考资料。

    本书用通俗易懂的语言向读者介绍 Visual Studio 的功能,书中所涉及的代码及用例都是作者精心挑选的。每段代码既有良好的可读性,又能很好地传达作者意图,使读者能轻松地理解每项功能,掌握 Visual Studio 的使用和开发秘诀!

    本书分为集成开发环境、入门、进阶、桌面应用程序、Web 应用程序、移动应用程序、云服务、数据、调试、构建和部署、Visual Studio 版本共 11 部分,列举大量实例论述如何将最现代的软件工程思想应用于软件开发生命周期的各个阶段(需求、项目管理、架构设计、开发和测试等)。本书大部分实例程序都可直接用于用户开发的应用程序中。

    最后,祝各位开发者在学习过程中一帆风顺,能熟练掌握使用 Visual Studio 开发的技巧,实现自己的编程梦想。 这里要感谢清华大学出版社的编辑,他们为本书的翻译付出了很多心血。没有他们的帮助和鼓励,本书不可能

    顺利付梓。本书全部章节由李立新翻译,参与翻译的还有陈妍、何美英、陈宏波、熊晓磊、管兆昶、潘洪荣、曹汉

    鸣、高娟妮、王燕、谢李君、李珍珍、王璐、王华健、柳松洋、曹晓松、陈彬、洪妍、刘芸、邱培强、高维杰、张

    素英、颜灵佳、方峻、顾永湘、孔祥亮。 对于这本经典之作,译者本着“诚惶诚恐”的态度,在翻译过程中力求“信、达、雅”,但鉴于译者水平有限,

    错误和失误在所难免,如有任何意见和建议,请不吝指正。

    译者

  • 作 者 简 介

    Bruce Johnson 是 ObjectSharp 咨询公司的一位合作伙伴,在计算机界具有 30 年的工作经验。他的前三个职业是从事“具体工作”,即在 UNIX 上编程。但他在 20 年的时间内处理的项目所使用的都是 Windows 前沿技术,从 C++、Visual Basic、C#、胖客户端应用程序、Web 应用程序、API 乃至各种数据库和前端开发。

    除了喜欢建立系统之外,Bruce 还在北美会议上和用户组中发言数百次。他是 Microsoft Certified Trainer(MCT),是.NET User Group Metro Toronto 的副组长。他还为许多杂志撰写专栏和文章。由于所有这些成就,Bruce 在过去10 年中一直是 Microsoft MVP。目前他在撰写新书。

  • 技术编辑简介

    John Mueller 是一名自由撰稿人和技术编辑。他醉心于写作,至今已经出版了 104 本书,发表了 600 多篇文章。主题包括网络、人工智能、数据库管理、编程(入门到精通)等。他目前的作品包括一本关于机器学习的书籍,几本Python 书籍,还有一本关于 MATLAB 的书籍。他还编写了 AWS for Admins for Dummies 和 AWS for Developers for Dummies,前者为管理员提供了开始使用 AWS 的入门书籍,后者适用于开发人员。他凭借技术编辑技巧帮助 70 多位作者修改手稿。John 一直对开发很感兴趣,他编写过介绍多种语言的图书,包括一本非常成功的 C++书籍。读者可在 http://blog.johnmuellerbooks.com 上访问 John 的博客,也可通过 [email protected] 联系 John。

  • 致 谢

    在外行看来,写书似乎是个人的事。其实不然,甚至根本不是这样。没有多位人士为此付出的努力、提供的帮

    助,本书就不可能出版。参与编写和编辑过程的其他人从来都没有得到足够的感谢。本书清晰、准确、有效,是因

    为编辑、技术审核人员和责任编辑都付出了努力,还有负责出版、封面的人士,以及这里未提及的书中其他人士。

    非常感谢这些人提供的帮助,也很高兴能与这些人一起工作。

    由衷地感谢 Wrox 公司帮我完成本书的所有人,特别是 Kelly Talbot,如果我没记错的话,这是我与 Kelly 合作的第三本或第四本书。一如既往,他对细节的关注使本书避免了大量错误。不仅如此,他的耐心和勤奋确保我能按

    时完成任务。也感谢 John Mueller,他不仅确保我在第一稿中犯的技术错误在出版前都更正过来,而且提供了一些很好的建议,帮助我理顺了内容。最后,多亏 Nancy Bell,她阅读了我撰写的内容,保证其语法上的正确性。所有这些人的努力终于促成了本书成功出版。

  • 前 言

    Visual Studio 作为开发工具,一直都在竞争中处于领先地位。负责开发 Visual Studio 的团队一直把编码效率列在优先级列表的顶部。这个版本延续了这个传统。Visual Studio 总是融合了 Microsoft 主要编程语言(Visual Basic 和C#)的最新改进,还添加了一些小功能,这对程序员来说是件好事。但在更高层次上,Visual Studio 2017 将以多种方式拥抱开源、移动开发和云计算。Azure 不断推出新的功能和产品,Visual Studio 2017 将与它们无缝集成。理论上,使用记事本和命令行窗口这样的简单工具也可以创建任意.NET 应用程序,但开发人员一般不会这么做。Visual Studio 2017 包含了许多改进功能和新功能,以简化开发工作。

    无论从哪方面看,Visual Studio 2017 都是一款庞大的产品,所以初学者和经验丰富的.NET 开发人员要找到需要的功能比较困难。本书介绍这个开发工具的所有主要方面,阐述如何使用每项功能,给出如何高效使用各种组件

    的建议,还说明 Visual Studio 2017 的组成部分,并把用户界面分解为容易管理的块以便于理解。此后详细描述这些组件,包括它们各自的作用以及相互之间如何协调工作,并介绍未包含在该产品中的一些工具,使开发工作更高效。

    本书读者对象

    本书面向所有 Visual Studio 开发新手以及想学习一些新特性的有经验的编程人员。 熟悉 Visual Studio 编程环境的读者可跳过本书的第Ⅰ部分,该部分介绍用户界面的基本构造。安装过程变化最

    大,粒度更细了,意味着你可以只安装所需的内容;如果不首先安装组件,安装过程只需要单击一两次即可完成。

    增加的功能不多,因此可以不阅读第Ⅰ部分,但 Visual Studio 2017 中的一些变化可以使开发更高效;毕竟,这是读者阅读本书的目的。

    初次使用 Visual Studio 的读者,应该先阅读本书的第Ⅰ部分,该部分介绍了一些最基本的概念,为读者展示用户界面,并讲解如何定制自己的编程环境。

    本书主要内容

    Visual Studio 2017 无疑是目前可供开发人员使用的最佳集成开发环境(IDE)。它基于成熟的编程语言和接口,受到开发环境许多不同方面的影响。

    Visual Studio 2017 不是一个革命性版本。然而,无论创建什么类型的应用程序,都要做一些调整——很小的调整(例如.NET Core)。熟悉这些变化可以帮助我们更好地完成工作。出于这个原因,以及为了更好地帮助 Visual Studio新手,本书涵盖了该产品的所有内容。这样,读者会更熟悉界面,更得心应手。

    Visual Studio 2017 有几个版本:社区版、专业版和企业版。本书主要介绍 Visual Studio 2017 的专业版,但有些功能只在企业版中才有。如果之前没用过这些版本,请参阅第 38 章和第 39 章的相关内容。

    本书组织结构

    本书分为以下 11 个部分: ● 集成开发环境:本书前 5 章旨在帮助你熟悉 Visual Studio 2017 的核心部分。从 IDE 结构和布局到各种选项

    和设置,包含使用户界面匹配自己的工作方式所需的所有内容。 ● 入门:该部分介绍如何控制项目,以及如何组织它们,以符合自己的风格。 ● 进阶:虽然 Visual Studio 的许多图形组件使程序员的工作更容易完成,但程序员在编码时经常需要其他一些

    帮助。因此,本部分介绍支持应用程序编码的功能,如 IntelliSense、代码重构以及单元测试的创建和运行。 ● 桌面应用程序:在.NET Framework 中,富客户端应用程序已经有了很大的变化,从 Windows Form 应用程

    序到 Windows Presentation Foundation (WPF),再到通用 Windows 平台应用程序,每个应用程序都用单独的

  • Visual Studio 2017 高级编程(第 7 版)

    VI

    一章来探讨。 ● Web 应用程序:Web 应用程序比桌面应用程序有更多的变化。就像桌面应用程序一样,三种不同的开发风

    格(ASP.NET Web 窗体、ASP.NET MVC 和.NET Core)都用单独的一章来探讨。几个新功能:块、Node.js 和Python 也包括在这一部分。

    ● 移动应用程序:Visual Studio 2017 支持用两种不同的风格来开发移动应用程序。通过 Xamarin,可以使用熟悉的.NET 组件创建移动应用程序。通过 Apache Cordova(以前的 PhoneGap),可以针对移动设备使用 HTML、CSS 和 JavaScript。

    ● 云服务:Visual Studio 2017 以各种方式支持云。Windows Azure 这一章着眼于 Azure 的一些新特性如何集成到 Visual Studio 中。此外,还研究如何使用同步服务作为数据存储平台,以及如何为 SharePoint 创建应用程序。

    ● 数据:大多数应用程序都使用某种数据存储形式。Visual Studio 2017 和.NET Framework 都包含处理数据库和其他数据源的强大支持。本部分讲述如何使用 Visual Database Tools 和 ADO.NET Entity Framework 构建处理数据的应用程序,还讨论如何使用 Azure 中的几个新功能支持数据仓库的构建和数据分析。

    ● 调试:应用程序调试是开发人员必须完成的一项较难任务,但正确使用 Visual Studio 2017 的调试功能有助于分析应用程序的状态,并确定出错的原因。该部分介绍 IDE 提供的调试支持功能。

    ● 构建和部署:除讨论如何构建有效的解决方案和向最终用户交付应用程序外,该部分还涉及如何升级以前版本的项目。

    ● Visual Studio 版本:本书最后一部分介绍只能在 Visual Studio 2017 的企业版中使用的功能,另外探讨 Visual Studio Team Services 为管理软件项目提供的基本工具。

    尽管对 Visual Studio 功能进行了上述分解,并提供了逻辑性最强、易于理解的主题,但读者仍需要查找特定的功能来帮助自己完成某个活动。为了满足这个需求,只要在本书的其他地方详细介绍某个功能,本书就会提供对应

    章节的参考。 随着 Visual Studio 的发展,本书的早期版本已经发展到了难以控制的地步。Visual Studio 2017 还有更多功能,

    为避免本书的篇幅超过 2000 页,我们从早期版本的 Visual Studio 中选取了一些章节,将它们放到一个在线档案中;这些章节包含了 Visual Studio 2017 中没有更改或增强的特性。因此,一般来说,如果想在 Visual Studio 2017 中使用这些指令,其中的说明将会适用。可以在 www.wrox.com 上找到这个在线档案。

    本书使用前提

    为高效地使用本书,需要安装 Visual Studio 2017 专业版,结合本书的内容安装软件并实际操作,会在极短时间内掌握高效使用 Visual Studio 2017 的方法。为了跟随本书中的所有示例,应确保在 Visual Studio 2017 安装期间安装以下工作负载(如第 1 章所述):

    ● Universal Windows Platform ● .NET desktop development ● ASP.NET and web development ● Azure development ● Node.js development ● Data storage and processing ● Data science and analytical applications ● Mobile development with .NET ● Mobile development with Javascript ● .NET code cross-platform development 本书假设读者已经熟悉传统的编程模型,将使用 C#和 Visual Basic(VB)语言演示 Visual Studio 2017 的功能。此

    外,还假设读者能理解代码清单,因此不解释这两种语言的基本编程概念。如果读者刚开始编程,希望学习 Visual Basic,可以阅读 Bryan Newsome 编著的《Visual Basic 2015 入门经典(第 8 版)》。同样,如果希望有一本关于 C#的好书,可以阅读 Benjamin Perkins、Jacob Vibe Hammer 和 Jon D. Reid 编著的《C#入门经典(第 7 版)》。

  • 前 言

    VII

    一些章节讨论了与 Visual Studio 一起使用的其他产品和工具,可以从网站下载免费版本或试用版本。 ● Code Snippet Editor:这是一个第三方工具,用于在 Visual Basic 中创建代码片段。Code Snippet Editor 工

    具的详情请参见第 8 章。 ● SQL Server 2016:Visual Studio 2017 的安装包包含 SQL Server 2016 Express,可构建使用数据库文件的应

    用程序。但对于比较全面的企业解决方案而言,可使用 SQL Server 2016。 ● Visual Studio 2017 企业版:一个更强大的 Visual Studio 版本,针对开发过程中的其他阶段(如测试和设计)

    引入了工具。有关内容请参见第 38 章和第 39 章。 ● Team Foundation Server 或 Team Foundation Service:这个服务器产品(或基于云的产品)提供了 Visual

    Studio 2017 中的应用程序生命周期管理功能,参见第 40 章。 ● Windows 7、Windows 8 或 Windows 10:Visual Studio 2017 与 Windows 7 SP1、Windows 8.1 或 Windows 10

    兼容,可以生成在 Windows XP、Windows Vista、Windows 7、Windows 8 和 Windows 10 上运行的应用程序。

    勘误表

    尽管我们已经尽了各种努力来保证书中不出现错误,但错误总是难免的,如果你在本书中找到了错误,例如拼

    写错误或代码错误,请告诉我们,我们将非常感激。通过勘误表,可以让其他读者避免被误导,当然,这还有助于

    提供更高质量的信息。 请给 [email protected] 发电子邮件,我们就会检查你的信息,如果是正确的,我们将在本书的后续版本

    中采用。 要在网站上找到本书的勘误表,可以登录 http://www.wrox.com,通过 Search 工具或书名列表查找本书,然后在

    本书的细目页面上,单击 Book Errata 链接。在这个页面上可以查看到 Wrox 编辑已提交和粘贴的所有勘误项。完整的图书列表还包括每本书的勘误表,网址是 www.wrox.com/misc-pages/booklist.shtml。

    p2p.wrox.com

    要与作者和同行讨论,请加入 p2p.wrox.com 上的 P2P 论坛。这个论坛是一个基于 Web 的系统,便于你张贴与Wrox 图书相关的消息和相关技术,与其他读者和技术用户交流心得。该论坛提供了订阅功能,当论坛上有新的消息时,它可以给你传送感兴趣的论题。Wrox 作者、编辑和其他业界专家和读者都会到这个论坛上来探讨问题。

    在 http://p2p.wrox.com 上,有许多不同的论坛,它们不仅有助于阅读本书,还有助于开发自己的应用程序。要加入论坛,可以遵循下面的步骤:

    (1) 进入 p2p.wrox.com,单击 Register 链接。 (2) 阅读使用协议,并单击 Agree 按钮。 (3) 填写加入该论坛所需的信息和自己希望提供的其他信息,单击 Submit 按钮。 (4) 你会收到一封电子邮件,其中的信息描述了如何验证账户,完成加入过程。

    加入论坛后,就可以张贴新消息,响应其他用户张贴的消息。可以随时在 Web 上阅读消息。如果要让该网站给自己发送特定论坛中的消息,可以单击论坛列表中该论坛名旁边的 Subscribe to this Forum 图标。

    关于使用 Wrox P2P 的更多信息,可阅读 P2P FAQ,了解论坛软件的工作情况以及 P2P 和 Wrox 图书的许多常见问题。要阅读 FAQ,可以在任意 P2P 页面上单击 FAQ 链接。

    源代码

    读者在学习本书中的示例时,可以手动输入所有的代码,也可以使用本书附带的源代码文件。本书使用的

    不加入 P2P 也可以阅读论坛上的消息,但要张贴自己的消息,就必须加入该论坛。

  • Visual Studio 2017 高级编程(第 7 版)

    VIII

    所有源代码都可以从本书合作站点 http://www.wrox.com/或 www.tupwk.com.cn/downpage 下载。登录到站点http://www.wrox.com/,使用 Search 工具或使用书名列表就可以找到本书。接着单击本书细目页面上的 Download Code 链接,就可以获得所有源代码。另外,也可扫描封底的二维码下载资料。

    下载了代码后,只需要用自己喜欢的解压缩软件对它进行解压缩即可。另外,也可以进入 http://www.wrox.

    com/dynamic/books/download.aspx 上的 Wrox 代码下载主页,查看本书和其他 Wrox 图书的所有代码。

    由于许多图书的书名都很类似,因此按 ISBN 搜索是最简单的,本书英文版的 ISBN 是978-1-119-40458-3。

  • 目 录

    第Ⅰ部分 集成开发环境

    第 1 章 快速入门 ···················································· 3 1.1 入门 ································································3

    1.1.1 安装 Visual Studio 2017 ································ 3 1.1.2 运行 Visual Studio 2017 ································ 7 1.1.3 Visual Studio 真的支持云吗? ····················· 7

    1.2 Visual Studio IDE ············································8 1.3 小结 ······························································13

    第 2 章 Solution Explorer、Toolbox 和 Properties 窗口 ···································· 15

    2.1 Solution Explorer 窗口 ··································15 2.1.1 预览文件 ·····················································18 2.1.2 常见任务 ·····················································18

    2.2 Toolbox 窗口·················································26 2.2.1 排列组件 ·····················································27 2.2.2 添加组件 ·····················································28

    2.3 Properties 窗口 ··············································29 2.4 小结 ······························································33

    第 3 章 选项和定制··············································· 35 3.1 Start Page·······················································35 3.2 窗口布局·······················································36

    3.2.1 查看窗口和工具栏 ·····································36 3.2.2 停靠 ·····························································37 3.2.3 保存窗口布局 ·············································39

    3.3 编辑区域·······················································40 3.3.1 浏览打开的项 ·············································41 3.3.2 字体和颜色 ·················································42 3.3.3 可视化指南 ·················································42 3.3.4 全屏模式 ·····················································43 3.3.5 跟踪变化 ·····················································44

    3.4 其他选项·······················································44 3.4.1 快捷键 ·························································44 3.4.2 快速启动 ·····················································45 3.4.3 项目和解决方案 ·········································46 3.4.4 Build and Run 界面 ·····································47 3.4.5 VB 选项·······················································48

    3.5 导入和导出设置 ···········································48

    3.6 小结 ······························································50

    第 4 章 Visual Studio 工作区 ·································51

    4.1 代码编辑器··················································· 51 4.1.1 代码编辑器窗口的布局······························ 51 4.1.2 区域 ····························································· 52 4.1.3 大纲 ····························································· 53 4.1.4 代码的格式化 ············································· 53 4.1.5 向前/向后浏览 ············································ 54 4.1.6 其他代码编辑器功能·································· 54 4.1.7 拆分视图 ····················································· 55 4.1.8 代码窗口的分离(浮动) ······························· 55 4.1.9 复制 Solution Explorer ································ 56 4.1.10 创建选项卡组 ··········································· 57 4.1.11 高级功能 ··················································· 58

    4.2 代码导航······················································· 59 4.2.1 Peek Definition ············································ 59 4.2.2 增强的滚动条 ············································· 60

    4.3 命令窗口······················································· 63 4.4 Immediate 窗口············································· 64 4.5 Class View 工具窗口 ···································· 64 4.6 Error List 窗口 ·············································· 65 4.7 Object Browser 窗口 ····································· 65 4.8 小结 ······························································ 66

    第 5 章 查找和替换以及帮助 ·································67 5.1 Quick Find 与 Quick Replace ························ 67

    5.1.1 Quick Find ··················································· 67 5.1.2 Quick Replace·············································· 68 5.1.3 查找选项 ····················································· 68 5.1.4 Find and Replace 选项································· 69

    5.2 文件中查找/替换 ·········································· 69 5.2.1 文件中查找 ················································· 69 5.2.2 查找对话框选项 ········································· 70 5.2.3 正则表达式 ················································· 70 5.2.4 结果窗口 ····················································· 72 5.2.5 文件中替换 ················································· 72

    5.3 访问帮助······················································· 73 5.3.1 浏览和搜索帮助系统·································· 73 5.3.2 配置帮助系统 ············································· 74

    5.4 小结 ····························································· 74

  • Visual Studio 2017 高级编程(第 7 版)

    X

    第Ⅱ部分 入门

    第 6 章 解决方案、项目和项·································77 6.1 解决方案的结构 ·········································· 77 6.2 解决方案文件的格式··································· 78 6.3 解决方案的属性 ·········································· 79

    6.3.1 常规属性 ···················································· 80 6.3.2 配置属性 ···················································· 80

    6.4 项目类型······················································ 81 6.5 项目文件格式 ·············································· 83 6.6 项目属性······················································ 83

    6.6.1 Application 选项卡····································· 83 6.6.2 Compile 选项卡(仅用于 Visual Basic) ······ 86 6.6.3 Build 选项卡(仅用于 C#和 F#) ················· 87 6.6.4 Build Events 选项卡(仅用于 C#和 F#)······ 88 6.6.5 Debug 选项卡············································· 88 6.6.6 References 选项卡(仅用于 Visual Basic)··· 89 6.6.7 Resources 选项卡 ······································· 90 6.6.8 Services 选项卡 ·········································· 90 6.6.9 Settings 选项卡 ·········································· 91 6.6.10 Reference Paths 选项卡(仅用于

    C#和 F#)····················································· 91 6.6.11 Signing 选项卡 ········································· 92 6.6.12 My Extensions 选项卡(仅用于

    Visual Basic)············································· 92 6.6.13 Security 选项卡 ········································ 93 6.6.14 Publish 选项卡 ········································· 93 6.6.15 Code Analysis 选项卡 ······························ 94

    6.7 C/C++ Code Analysis 工具··························· 95 6.8 Web 应用程序项目属性 ······························ 96

    6.8.1 Web 选项卡 ················································ 96 6.8.2 Package/Publish Web 选项卡 ····················· 96 6.8.3 Package/Publish SQL 选项卡····················· 97

    6.9 Web Site 项目··············································· 97 6.10 NuGet 包 ···················································· 98

    6.10.1 NuGet 包管理器····································· 98 6.10.2 Package Manager Console······················ 99

    6.11 小结···························································· 99

    第 7 章 IntelliSense 和书签·································101 7.1 对 IntelliSense 的解释································ 101

    7.1.1 通用的 IntelliSense···································102 7.1.2 IntelliSense 和 C++ ···································103 7.1.3 单词和短语的自动完成····························103 7.1.4 参数信息 ···················································107 7.1.5 快速信息 ···················································108

    7.2 JavaScript IntelliSense································· 108 7.2.1 JavaScript IntelliSense 上下文 ··················108 7.2.2 引用另一个 JavaScript 文件 ·····················109

    7.3 XAML IntelliSense······································ 110 7.4 IntelliSense 选项 ········································· 110

    7.4.1 通用选项 ···················································110 7.4.2 C#的特定选项··········································· 111

    7.5 扩展 IntelliSense ········································· 112 7.5.1 代码片段 ···················································112 7.5.2 XML 注释 ·················································112 7.5.3 添加自己的 IntelliSense····························112

    7.6 书签和 Bookmarks 窗口 ····························· 113 7.7 小结 ···························································· 114

    第 8 章 代码片段和重构·······································115 8.1 代码片段概述 ············································· 115

    8.1.1 在 Toolbox 中存储代码块 ························115 8.1.2 代码片段 ···················································116 8.1.3 使用 C#中的代码片段 ······························116 8.1.4 VB 中的代码片段 ·····································117 8.1.5 用代码片段进行封装································117 8.1.6 Code Snippets Manager ·····························118 8.1.7 创建代码片段 ···········································119 8.1.8 查看已有的代码片段································119 8.1.9 分布代码段 ···············································122

    8.2 访问重构支持 ············································· 123 8.3 重构操作····················································· 123

    8.3.1 Extract Method 重构操作··························123 8.3.2 Encapsulate Field 重构操作 ······················124 8.3.3 Extract Interface 重构操作 ························124 8.3.4 Change Signature 重构操作 ······················125 8.3.5 Inline 和 Explaining Variables 重构操作 ·····125 8.3.6 Rename 重构操作 ·····································126 8.3.7 Simplify Object Initialization 重构操作 ····126 8.3.8 Inline Variable Declarations 重构操作 ····· 127 8.3.9 Use‘throw’Expression 重构操作 ···············127 8.3.10 Generate Method Stub 重构操作·············128 8.3.11 Remove and Sort Usings 重构操作········ 129

    8.4 小结 ···························································· 129

    第 9 章 Server Explorer·······································131 9.1 Servers 连接················································ 131

    9.1.1 Event Logs 节点 ········································132 9.1.2 Message Queues 节点································133 9.1.3 Performance Counters 节点 ·······················135 9.1.4 Services 节点·············································137

    9.2 Data Connections 节点································ 138

  • 目 录

    XI

    9.3 SharePoint Connections 节点 ······················138 9.4 小结 ····························································138

    第Ⅲ部分 进阶

    第 10 章 单元测试 ·············································· 141 10.1 第一个测试用例 ·······································141

    10.1.1 使用特性标识测试 ·······························145 10.1.2 其他测试特性 ·······································145 10.1.3 单元测试和 Code Lens ·························147

    10.2 指定判断条件 ···········································148 10.2.1 Assert 类 ···············································148

    10.2.2 StringAssert 类 ······································149 10.2.3 CollectionAssert 类 ·······························149 10.2.4 ExpectedException 特性 ·······················149

    10.3 初始化和清理 ···········································150 10.3.1 TestInitialize 和 TestCleanup 特性········151 10.3.2 ClassInitialize 和 ClassCleanup 特性····151 10.3.3 AssemblyInitialize 和 AssemblyCleanup

    特性·······················································151 10.4 测试环境 ···················································151

    10.4.1 数据·······················································152 10.4.2 输出测试结果 ·······································154

    10.5 Live Unit Testing ·······································154 10.6 高级单元测试 ···········································155

    10.6.1 定制属性···············································155 10.6.2 测试私有成员 ·······································156

    10.7 IntelliTest···················································157 10.8 小结···························································159

    第 11 章 项目模板和项模板 ································ 161

    11.1 创建模板 ···················································161 11.1.1 项模板···················································161 11.1.2 项目模板 ···············································164 11.1.3 模板结构 ···············································164 11.1.4 模板参数 ···············································165 11.1.5 模板位置 ···············································166

    11.2 扩展模板 ···················································166 11.2.1 模板项目的安装 ···································166 11.2.2 IWizard··················································166 11.2.3 生成扩展项目模板 ·······························170

    11.3 Starter Kit ··················································171 11.4 联机模板 ···················································171 11.5 小结···························································172

    第 12 章 管理源代码··········································· 173 12.1 源控制·······················································173

    12.1.1 选择源控制存储库 ·······························173

    12.1.2 访问源控制···········································174 12.2 小结 ·························································· 177

    第Ⅳ部分 桌面应用程序

    第 13 章 Windows Form 应用程序·······················181 13.1 入门 ·························································· 181 13.2 Windows 窗体··········································· 182

    13.2.1 Appearance 属性 ······························ 182 13.2.2 Layout 属性····································· 183 13.2.3 Window Style 属性 ··························· 183

    13.3 窗体设计首选项 ······································· 183 13.4 添加和定位控件 ······································· 184

    13.4.1 垂直对齐文本控件··························· 185 13.4.2 自动定位多个控件··························· 185 13.4.3 控件的 Tab 键顺序和分层 ················ 186 13.4.4 锁定控件设计 ································· 187 13.4.5 设置控件属性 ································· 187 13.4.6 基于服务的组件 ······························ 188 13.4.7 智能标记任务 ································· 188

    13.5 容器控件··················································· 188 13.5.1 Panel 和 SplitContainer 控件·············· 189 13.5.2 FlowLayoutPanel 控件 ······················ 189 13.5.3 TableLayoutPanel 控件 ····················· 190

    13.6 停靠和锚定控件 ······································· 190 13.7 小结 ·························································· 191

    第 14 章 Windows Presentation Foundation (WPF)····················································193

    14.1 WPF 介绍 ················································· 193 14.2 开始使用 WPF·········································· 194

    14.2.1 XAML 基础 ···································· 195 14.2.2 WPF 控件 ······································· 196 14.2.3 WPF 布局控件 ································ 197

    14.3 WPF 设计器和 XAML 编辑器 ················· 198 14.3.1 使用 XAML 编辑器 ························· 200 14.3.2 使用 WPF 设计器 ···························· 200 14.3.3 Properties 工具窗口·························· 202 14.3.4 数据绑定功能 ································· 205

    14.4 设置应用程序的样式 ······························· 208 14.5 Windows Forms 的交互操作性················· 210

    14.5.1 在 Windows Forms 中驻留 WPF

    控件 ··············································· 210 14.5.2 在 WPF 中驻留 Windows Forms

    控件 ··············································· 211 14.6 用 WPF Visualizer 调试 ···························· 213 14.7 小结 ·························································· 214

  • Visual Studio 2017 高级编程(第 7 版)

    XII

    第 15 章 通用 Windows 平台应用程序 ·················215 15.1 Windows 应用程序的定义························ 215

    15.1.1 呈现内容········································· 216 15.1.2 对齐和缩放 ····································· 216 15.1.3 语义式缩放 ····································· 217 15.1.4 磁贴 ··············································· 217 15.1.5 接受云 ············································ 217

    15.2 创建 Windows 应用程序··························· 217 15.3 Windows 运行库组件 ······························· 222 15.4 .NET Native 编译 ······································ 222 15.5 小结··························································· 224

    第Ⅴ部分 Web 应用程序

    第 16 章 ASP.NET Web 窗体·······························227 16.1 Web Application 项目和 Web Site 项目 ···· 227 16.2 创建 Web 项目 ·········································· 228

    16.2.1 创建 Web Site 项目·······························228 16.2.2 创建 Web Application 项目 ··················230

    16.3 设计 Web 窗体 ·········································· 233 16.3.1 HTML Designer ···································· 233 16.3.2 定位控件和 HTML 元素 ······················234 16.3.3 格式化控件和 HTML 元素 ··················235 16.3.4 CSS 工具···············································237 16.3.5 验证工具···············································239

    16.4 Web 控件··················································· 240 16.4.1 导航组件···············································240 16.4.2 用户身份验证 ·······································240 16.4.3 数据组件···············································241

    16.5 主页面······················································· 243 16.6 富客户端开发 ··········································· 245

    16.6.1 用 JavaScript 开发 ································245 16.6.2 使用 ASP.NET AJAX ···························246

    16.7 小结··························································· 248

    第 17 章 ASP.NET MVC······································249 17.1 Model-View-Controller······························ 249 17.2 开始使用 ASP.NET MVC ························· 250 17.3 选择 Model················································ 252 17.4 Controller 和 action 方法··························· 253 17.5 用 View 显示 UI········································ 255 17.6 高级 MVC················································· 261

    17.6.1 路由·······················································261 17.6.2 action 方法参数 ····································264 17.6.3 区域·······················································266 17.6.4 验证·······················································268 17.6.5 部分 View ·············································269

    17.6.6 Dynamic Data 模板 ·······························270 17.6.7 jQuery ··················································· 272

    17.7 小结 ·························································· 273

    第 18 章 .NET Core·············································275 18.1 .NET Core 的定义····································· 275 18.2 使用 ASP.NET Core·································· 276

    18.2.1 project.json 和 csproj·····························277 18.2.2 创建 ASP.NET Core 应用程序 ·············277

    18.3 NuGet 包管理器 ······································· 280 18.4 Bower 包管理器 ······································· 283 18.5 小结 ·························································· 285

    第 19 章 Node.js 开发 ·········································287 19.1 开始使用 Node.js······································ 287 19.2 Node Package Manager ····························· 291 19.3 Task Runner Explorer ································ 294 19.4 小结 ·························································· 296

    第 20 章 Python 开发 ··········································297 20.1 Python 入门 ·············································· 297 20.2 Cookiecutter 扩展 ····································· 301 20.3 小结 ·························································· 302

    第Ⅵ部分 移动应用程序

    第 21 章 使用.NET 的移动应用程序 ····················305 21.1 使用 Xamarin············································ 305 21.2 创建 Xamarin Forms 项目 ························ 306 21.3 调试应用程序 ··········································· 308

    21.3.1 通用 Windows 平台 ······························308 21.3.2 Android ················································· 308 21.3.3 iOS ························································ 316

    21.4 小结 ·························································· 318

    第 22 章 使用 JavaScript 的移动应用程序 ···········319 22.1 Apache Cordova 的概念···························· 319 22.2 创建 Apache Cordova 项目······················· 320

    22.2.1 merges 文件夹 ······································321 22.2.2 plugins 文件夹 ······································321 22.2.3 www 文件夹 ·········································322 22.2.4 其他文件和文件夹 ·······························322

    22.3 在 Apache Cordova 中调试······················· 325 22.4 小结 ·························································· 327

    第Ⅶ部分 云服务

    第 23 章 Windows Azure ·····································331 23.1 Windows Azure 平台································· 331

  • 目 录

    XIII

    23.1.1 Compute Emulator ······································333 23.1.2 角色之间的通信·········································333 23.1.3 应用程序部署·············································335

    23.2 SQL Azure·················································337 23.3 Service Fabric············································338 23.4 Azure 移动服务 ········································339 23.5 Azure 虚拟机 ············································340

    23.5.1 连接性 ·························································340 23.5.2 端点 ·····························································340 23.5.3 虚拟网络 ·····················································340

    23.6 小结···························································341

    第 24 章 同步服务 ·············································· 343 24.1 偶尔连接的应用程序································343 24.2 Server Direct··············································344 24.3 同步服务入门 ···········································346 24.4 N 层上的同步服务····································349 24.5 小结···························································350

    第 25 章 SharePoint ··········································· 351 25.1 SharePoint 执行模型 ·································351

    25.1.1 场解决方案 ·················································351 25.1.2 沙箱解决方案·············································352 25.1.3 应用程序模型·············································352

    25.2 准备开发环境 ···········································352 25.3 创建 SharePoint 项目 ································354 25.4 运行应用程序 ···········································359 25.5 小结···························································361

    第Ⅷ部分 数据

    第 26 章 可视化数据库工具 ································ 365 26.1 Visual Studio 2017 中的数据库窗口 ·········365

    26.1.1 Server Explorer 窗口···································365 26.1.2 Data Sources 窗口·······································368 26.1.3 SQL Server Object Explorer ·······················369

    26.2 编辑数据 ···················································369 26.3 Redgate 数据工具 ·····································370

    26.3.1 ReadyRoll Core ···········································370 26.3.2 SQL Prompt Core········································373 26.3.3 SQL Search··················································374

    26.4 小结···························································375

    第 27 章 ADO.NET Entity Framework ················ 377 27.1 什么是 Entity Framework··························377 27.2 入门···························································378 27.3 创建实体模型 ···········································378

    27.3.1 实体数据模型向导·····································378

    27.3.2 Entity Framework 设计器 ··························381 27.3.3 创建/修改实体············································384 27.3.4 创建/修改实体关联····································386 27.3.5 实体继承·····················································387 27.3.6 验证实体模型·············································387 27.3.7 根据数据库的修改来更新实体模型········387

    27.4 查询实体模型 ··········································· 387 27.4.1 LINQ to Entities 概述·································388 27.4.2 获得对象上下文·········································388 27.4.3 CRUD 操作·················································388 27.4.4 导航实体关联·············································391

    27.5 高级功能··················································· 392 27.5.1 从实体模型更新数据库 ····························392 27.5.2 给实体添加业务逻辑·································393 27.5.3 POCO ··························································393 27.5.4 Entity Framework Core·······························393

    27.6 小结 ·························································· 393

    第 28 章 数据仓库和数据湖 ·································395 28.1 Apache Hadoop 的概念····························· 395

    28.1.1 Hadoop 分布式文件系统···························395 28.1.2 MapReduce··················································396 28.1.3 其他组件·····················································396 28.1.4 HDInsight ····················································396 28.1.5 Azure 数据湖 ··············································396

    28.2 Visual Studio 的数据湖工具 ····················· 397 28.2.1 创建 Hive 应用程序···································398 28.2.2 创建 Pig 应用程序 ·····································400

    28.3 小结 ·························································· 403

    第 29 章 数据科学和分析····································· 405 29.1 R 的概念 ····················································405 29.2 R Tools For Visual Studio ···························405

    29.2.1 调试 R 脚本 ·················································407 29.2.2 工作区 ··························································409 29.2.3 绘图窗口······················································410

    29.3 小结 ···························································411

    第Ⅸ部分 调试

    第 30 章 使用调试窗口 ········································ 415 30.1 代码窗口····················································415

    30.1.1 断点 ······························································415 30.1.2 数据提示······················································415

    30.2 Breakpoints 窗口········································416 30.3 Output 窗口················································416 30.4 Immediate 窗口 ··········································417

  • Visual Studio 2017 高级编程(第 7 版)

    XIV

    30.5 Watch 窗口 ················································ 418 30.5.1 QuickWatch 窗口·········································418 30.5.2 Watch 1-4 窗口·············································419 30.5.3 Autos 窗口和 Locals 窗口 ··························419

    30.6 代码执行窗口 ··········································· 419 30.6.1 Call Stack 窗口·············································419 30.6.2 Threads 窗口 ················································420 30.6.3 Modules 窗口···············································420 30.6.4 Processes 窗口··············································420

    30.7 Memory 窗口 ············································ 421 30.7.1 Memory 1-4 窗口·········································421 30.7.2 Disassembly 窗口 ········································421 30.7.3 Registers 窗口 ··············································422

    30.8 并行调试窗口 ··········································· 422 30.8.1 Parallel Stacks 窗口······································423 30.8.2 Parallel Tasks 窗口·······································424

    30.9 Exceptions 窗口 ········································ 425 30.10 小结························································· 426

    第 31 章 断点调试 ··············································· 427 31.1 断点··························································· 427

    31.1.1 设置断点 ······················································427 31.1.2 添加中断条件··············································428 31.1.3 断点操作 ······················································430

    31.2 跟踪点······················································· 431 31.3 执行控制 ··················································· 432

    31.3.1 单步执行代码··············································432 31.3.2 Run to Cursor 功能 ······································433 31.3.3 移动执行点 ··················································434

    31.4 Edit and Continue 功能······························ 434 31.4.1 原始编辑 ······················································434 31.4.2 停止应用修改··············································434

    31.5 小结··························································· 434

    第Ⅹ部分 构建和部署

    第 32 章 升级到 Visual Studio 2017 ···················· 437 32.1 从最近的 Visual Studio 版本升级 ············ 437 32.2 升级到.NET Framework 4.6.2 ··················· 439 32.3 小结··························································· 440

    第 33 章 定制构建 ··············································· 441 33.1 通用构建选项 ··········································· 441 33.2 手动配置依赖关系 ··································· 443 33.3 Visual Basic 编译页面······························· 444

    33.3.1 高级编译器设置··········································444 33.3.2 构建事件 ······················································445

    33.4 C#构建页面 ···············································446 33.5 MSBuild·····················································448

    33.5.1 Visual Studio 使用 MSBuild 的方式··········448 33.5.2 MSBuild 模式 ··············································450 33.5.3 通过 MSBuild 任务设置程序集的

    版本 ···························································451 33.6 小结 ···························································452

    第 34 章 模糊处理、应用程序监控和管理············ 453 34.1 IL 反编译器 ···············································453 34.2 反编译器····················································454 34.3 模糊处理代码 ············································455

    34.3.1 Dotfuscator ···················································455 34.3.2 模糊处理特性··············································459 34.3.3 警告 ······························································460

    34.4 应用程序监控和管理 ································462 34.4.1 防篡改功能··················································462 34.4.2 应用程序检测和分析功能 ·························463

    34.5 小结 ···························································464

    第 35 章 打包和部署············································ 465 35.1 Windows Installer XML 工具集·················465

    35.1.1 构建安装程序··············································466 35.1.2 使用 Heat 创建片段 ····································468 35.1.3 服务安装程序··············································470

    35.2 ClickOnce 技术 ··········································470 35.2.1 部署 ······························································471 35.2.2 升级 ······························································473

    35.3 小结 ···························································474

    第 36 章 Web 应用程序的部署 ···························· 475 36.1 Web 部署 ···················································475

    36.1.1 发布 Web 应用程序 ····································475 36.1.2 发布到 Azure ···············································477

    36.2 Web 项目安装程序 ····································479 36.3 Web Platform Installer ································480 36.4 小结 ···························································483

    第 37 章 持续交付 ··············································· 485 37.1 定义术语····················································485

    37.1.1 持续交付······················································485 37.1.2 持续集成······················································486 37.1.3 DevOps·························································486

    37.2 持续交付工具 ············································486 37.2.1 设置持续交付··············································487 37.2.2 Heads Up Code Analysis······························488 37.2.3 自动构建通知··············································489

    37.3 小结 ···························································491

  • 目 录

    XV

    第Ⅺ部分 Visual Studio 版本

    第 38 章 Visual Studio Enterprise:代码质量 ······ 495 38.1 依赖验证 ··················································· 495 38.2 使用 Code Map 研究代码 ························· 499 38.3 代码克隆 ··················································· 500 38.4 小结··························································· 500

    第 39 章 Visual Studio Enterprise:测试和 调试 ······················································· 501

    39.1 自动测试 ··················································· 501 39.1.1 Web 性能测试··············································501 39.1.2 负载测试 ······················································503 39.1.3 编码 UI 测试················································505 39.1.4 一般测试 ······················································506 39.1.5 有序测试 ······················································506

    39.2 IntelliTrace ················································ 506

    39.3 IntelliTest ···················································509 39.4 小结 ···························································510

    第 40 章 Visual Studio Team Service ·················· 511 40.1 Git 入门 ·····················································511 40.2 版本控制····················································513

    40.2.1 提交 ······························································514 40.2.2 分支 ······························································514 40.2.3 同步 ······························································515

    40.3 工作项跟踪················································515 40.3.1 工作项查询··················································516 40.3.2 工作项类型··················································517 40.3.3 添加工作项··················································517 40.3.4 工作项状态··················································518

    40.4 Build ··························································518 40.5 门户网站····················································519 40.6 小结 ···························································519

  • 第Ⅰ部分

    集成开发环境

    第 1 章 快速入门

    第 2 章 Solution Explorer、Toolbox 和 Properties 窗口

    第 3 章 选项和定制

    第 4 章 Visual Studio 工作区

    第 5 章 查找和替换以及帮助

  • 快 速 入 门

    本章内容 ● 安装并开始使用 Visual Studio 2017 ● 创建并运行你的第一个应用程序 ● 调试并部署应用程序

    自从开始开发软件以来,就需要使用工具来帮助我们编写、编译、调试和部署应用程序。Visual Studio 2017 是

    最佳组合的集成开发环境(Integrated Development Environment,IDE)继续演化的下一个版本。 本章介绍 Visual Studio 2017 的用户体验,并学习使用各种菜单、工具栏和窗口。作为 IDE 的快速入门,本章

    不会详细列举每一个可以更改的设置,也不会介绍如何自定义 IDE 的布局,因为这些主题会在后续章节中讨论。

    1.1 入门

    Visual Studio 近来的一些版本在安装体验上已逐渐改进,不过 Visual Studio 2017 已经完全更新了安装选项和工作流。这样设计不仅旨在快速进入 Visual Studio 并运行,而且可以让你轻松选择安装自己需要的选项。本节介绍安装过程,并开始使用 IDE。

    1.1.1 安装 Visual Studio 2017

    Microsoft 将 Visual Studio 2017 的安装程序称为“低影响的安装程序(low-impact installer)”。在比较了 Visual Studio 2015 占用的空间与用户请求的体验和正在使用的体验之后,Microsoft 团队产生了创建一个“低影响的安装程序”的想法。可能令人惊讶的是,并不是每个开发人员都需要 Visual Studio 对 Windows Forms、ASP.NET、WPF、Universal Apps 以及 C++的支持。

    Microsoft 对Visual Studio 2015及其早期的版本都进行了优化,按 F5键就可以立即运行程序。要运行大多数.NET应用程序并不需要安装其他任何组件。虽然这只是有关易用性的一次显著增强,但确实是 Visual Studio 的一次具有纪念意义的重大转变(有些人可能会说这是在鼓吹)。

    Visual Studio 2017 的安装过程具有一些不同的方面。将自动安装“所有一切”改为可以根据安装的需要选取不同的组件。确实,这一过程相对于过去有所不同,但现在可以选择安装的组件选项增加了很多。不过,更多的选项

    并不意味着能得到更好的安装体验。实际上,当你试图从一百个不同的选项中挑选出项目所需的选项时,体验可能

    会很糟糕。为了解决这个问题,Visual Studio 2017 安装程序使用了工作负载(workload)的概念。 当启动 Visual Studio 2017 安装程序(该程序仅有 2MB 大小)时,会快速显示如图 1-1 所示的对话框。自然,该对

    话框的出现是在阅读(当然要详细阅读)并接受许可信息和隐私声明之后。

    1 第 章

  • 第Ⅰ部分 集成开发环境

    4

    图 1-1

    该对话框是安装程序的主要界面,可以在其中指定所期望组件的安装位置。组件的指定存在两种模式。图 1-1中的工作负载被分成 5 个不同的类别。为在安装过程中包含工作负载,只需要单击该对话框,就会在右上角显示一个蓝色的复选框。可以在安装过程中添加任意数量的工作负载。其中常用的工作负载如下。

    ● Universal Windows Platform development:如果要为 Universal Windows Platform 创建应用程序,而不考虑语言的选择,就可以使用该工作负载。

    ● .NET desktop development:允许使用 WPF 或 Windows Forms 创建应用程序。Console 应用程序模板也包含在该工作负载中。

    ● Desktop development with C++:用于构建经典的基于 Windows 的应用程序。如果期望使用 Visual C++、Active Template Library(ATL)或 Microsoft Foundation Classes(MFC),该选项就非常合适。

    ● ASP.NET and web development:添加用于构建 Web 应用程序的组件,包括 ASP.NET、ASP.NET Core和简单的旧式 HTML/JavaScript/CSS。

    ● Azure development:包含 Azure SDK、一些工具和项目模板,允许创建基于 Azure 的云应用程序。 ● Python development:包含对 cookiecutter、Python 3,以及用于与 Azure 交互的工具的支持。另外,也可

    以可选地包含 Python 的其他发布版本,如 Anaconda。 ● Node.js development:Visual Studio 2017 支持的新工具之一,其中包含的组件允许使用 Node.js 平台创建

    网络应用程序。 ● Data storage and processing:Azure 平台近来一些新增的组件,包括 Azure Data Lake、Hadoop 和 Azure

    ML(Machine Learning,机器学习)。该工作负载包括一些用于为 Azure 平台和 Azure SQL Server 数据库开发应用程序的模板和工具。

    ● Data science and analytical applications:可以将 R、Python 和 F#这三种语言一起带入其他工作负载。可以使用这些工具构建各种基于分析的应用程序。

    ● Office/SharePoint development:用于构建各种 Office 和 SharePoint 应用程序,包括 Office 加载项、SharePoint 解决方案和 Visual Studio Tools for Office(VSTO)加载项。

    ● Mobile development with .NET:Visual Studio 2017 所支持的三种移动开发技术之一,允许使用 Xamarin创建 iOS、Android 或 Windows 应用程序。

    ● Mobile development with JavaScript:与 Mobile development with .NET 类似,但该工作负载不使用Xamarin,而是使用 Tools for Apache Cordova 和 JavaScript 来开发应用程序。

    ● Mobile development with C++:三种移动开发环境之一,允许使用 C++创建 iOS、Android 或 Windows应用程序。

  • 第 1 章 快 速 入 门

    5

    ● Game development with Unity:Unity 是一个使用广泛且具有极灵活跨平台功能的游戏开发环境。该工作负载允许使用 Unity 框架创建 2D 和 3D 游戏。

    ● Game development with C++:支持使用 C++和 DirectX、Unreal 或 Cocos2d 等库创建游戏。 ● Visual Studio extension development:允许创建可在 Visual Studio 中使用的增件和扩展。其中包括代码分

    析器和工具窗口,它们