Skip to content

Files

Latest commit

590e50c · Jan 11, 2022

History

History
80 lines (46 loc) · 8.62 KB

6.md

File metadata and controls

80 lines (46 loc) · 8.62 KB

六、扩展和可扩展性

Visual Studio 2017 架构的变化对可扩展性模型有影响。本章将描述扩展和扩展管理方面的改进,但也将为希望将其 Visual Studio 2015 扩展升级到 Visual Studio 2017 可扩展性模型的扩展作者提供信息。

第 1 章中,我描述了基于工作负载的新安装模型,以及我们现在如何在同一台机器上安装多个版本的 Visual Studio 2017。例如,一个开发人员可能想要为企业版安装一个扩展,但不为社区版安装,而另一个开发人员可能只安装了核心编辑器,没有工作负载,因此一些扩展无法工作。因此,扩展必须足够通用以适应这些情况。为了支持这些场景,微软改变了可扩展性模型,引入了。vsix 文件格式,表示 Visual Studio 扩展安装程序。这提出了许多突破性的变化,将在本章后面描述。目前,您必须知道您只能安装专门为 Visual Studio 2017 编写和编译的扩展。Visual Studio 2015 的扩展也不能以 Visual Studio 2017 为目标,而 Visual Studio 2017 的扩展可以以 Visual Studio 的过去版本为目标,一直到并包括 Visual Studio 2012。现在让我们专注于使用第三方扩展时节省时间的新功能。

关于分机的第一个重要新功能是漫游分机管理器。该工具允许在不同的计算机上同步安装在每个 Visual Studio 安装上的扩展。漫游扩展管理器包含在扩展和更新对话框中,您可以通过工具 > 扩展 和更新启用该对话框。图 58 显示了该工具的外观。

图 58:激活漫游扩展管理器

扩展的状态由以下三个图标之一表示:

  • 白云意味着扩展可以漫游,但不能在本地安装。
  • 带有绿色复选符号的白色云表示扩展安装在本地并漫游。
  • 绿色复选符号表示分机安装在本地,但不漫游。

您可以通过选择一个分机,然后单击停止漫游(如果它漫游)或开始漫游(如果它只安装在本地)来控制分机漫游。在 Visual Studio 2017 中,这是您使用 Microsoft 帐户登录后启用的同步设置之一。

Visual Studio 2017 还引入了一种安装、更新和卸载扩展的新方法。事实上,集成开发环境现在允许您为安装、更新或删除安排多个扩展。这些操作将在您关闭 Visual Studio 时批量执行。为了理解这是如何工作的,请考虑图 59,其中您可以看到扩展和更新对话框。在图中,您可以看到两个标有时钟图标的扩展。此图标在您下载扩展后出现,它意味着它将在 Visual Studio 关闭后安装。

图 59:扩展的调度操作

在右下角,您可以看到按计划安装、计划更新和计划卸载分组的计划操作列表。例如,图 59 显示了更新节点旁边的数字 1,这意味着一个扩展有一个可用的更新。当您单击更新节点,然后为每个可用的更新单击更新按钮时,该扩展将列在“预定更新”组中。图 59 显示了在我的机器上,当 Visual Studio 关闭时,GitHub 扩展的更新是如何可用的,以及在“计划安装”组中列出的其他扩展。

这也适用于要删除的扩展。只需单击名称旁边的 X 符号,即可从明细表中排除扩展名。如果您熟悉 Visual Studio 2015,您可能还记得“扩展和更新”对话框如何提供按钮来重新启动 IDE,以便完成一个或多个扩展的安装或更新。在 Visual Studio 2017 中,您不再有这样的按钮。相反,您只能选择关闭对话框。当集成开发环境关闭时,所有操作都将批量执行。这是一种更方便的管理扩展的方式,避免将注意力从开发环境转移开。

| | 注意:这一部分专门用于扩展创作。如果您对此主题感兴趣,请确保您已经安装了 Visual Studio 扩展开发工作负载。我将假设您熟悉 Visual Studio 早期版本中的扩展创作,因此将不详细介绍一些步骤和概念。 |

Visual Studio 2017 的扩展创作需要面对一些与以前版本不同的更改,因为新的可扩展性模型和的 3.0 版本。vsix 文件格式。重大更改主要是由于 Visual Studio 2017 必须支持以下场景:

  • 开发人员可能会在同一台计算机上安装多个版本,因此扩展不能再安装在一个集中的位置,而必须与每个版本一起安装。
  • 开发人员可能只安装没有工作负载的 Visual Studio 核心编辑器,或者只安装有限数量的工作负载。这意味着扩展必须能够检测它们工作所需的工作负载和组件是否已安装。

这里有一个重要的含义:Visual Studio 2017 只能接受专门为这个版本的 IDE 编写并通过. vsix 包的 3.0 版本安装的扩展。为 Visual Studio 2015 编写的扩展不能简单地更新或重新编译为目标 Visual Studio 2017。但是,为 Visual Studio 2017 编写的扩展可以通过 Visual Studio 2012 进行定位。作为扩展作者,如果您有想要移植到 Visual Studio 2017 的现有扩展,您必须了解这些注意事项。

为了描述扩展创作中的新特性,需要一个可扩展性项目。现在,您可以简单地创建一个空白项目,因为新特性驻留在 VSIX 清单中。请遵循以下步骤:

  1. 选择文件 > 新建 > 项目
  2. 新建项目对话框中,展开您选择的语言(C# 或 VB),然后选择扩展性节点。
  3. 选择 VSIX 项目模板,根据需要提供不同的项目名称,然后点击确定
  4. 解决方案资源管理器中右键单击项目名称,然后选择添加新项目
  5. 添加新项目对话框中,点击扩展性节点。
  6. 选择一个可用的项目模板,然后点击确定。如果您想与本电子书保持一致,请选择自定义工具窗口模板。

一切准备就绪后,双击source . extension . vsixmindicate文件。这是包含构建所需的所有信息和元数据的扩展清单。vsix 包。

在清单设计器中,您将看到一个名为先决条件的新项目(见图 60)。

图 60:清单设计器中的新先决条件项

这个新元素非常重要,因为它允许指定扩展需要的工作负载或单个组件,以便在 Visual Studio 2017 中工作。如您所见,默认情况下,一个名为 Visual Studio 核心编辑器的先决条件是可用的,并且针对当前和未来版本的 IDE。点击新建添加新的先决条件。将出现添加新先决条件对话框,您可以从组合框中选择工作负载或组件,如图 61 所示。

图 61:选择先决条件

一旦选择,您将能够指定先决条件的版本号,如图 62 所示。

图 62:指定先决条件的版本号

指定版本是可选的,因为 Visual Studio 2017 会自动选择在开发计算机上检测到的当前 IDE 版本。

| | 注意:本节是结合 Visual Studio 2017 的发布候选版本编写的,这意味着当 Visual Studio 达到 RTM 里程碑时,默认版本号可能会略有不同。 |

指定所需的先决条件后,您可以构建。vsix 包。当在目标机器上启动时,VSIX 安装程序将显示所需先决条件的列表。

新的。vsix 格式支持 Native Image Generator 工具 Ngen,该工具允许创建扩展程序集和引用程序集的本机映像。可以使用属性窗口进行设置,如图 63 所示。

图 63: Ngen 和文件目标属性

以下 Ngen 选项可用:

  • Ngen:设置是否使用 Ngen。选项为真或假(默认)。
  • Ngen 应用程序:通过/ExeConfig 开关传入 Ngen 的应用程序。
  • Ngen 架构:指定 x86、x64 和 All 之间的架构。
  • 恩根优先级:指定恩根优先级。

在图 63 中,您还可以看到一个名为 VSIX 的组,它允许您控制一些重要资产的行为,例如。pkgdef 文件。属性是不言自明的,但是值得强调的是,您可以如何通过 Install Root 属性指定不同的安装目标。在这里,您可以从预定义的列表中选择一个目标文件夹,但是除非您有非常具体的要求,否则默认是一个很好的选择。

Visual Studio 2017 引入了两个用于使用第三方扩展的新工具——漫游扩展管理器,它可以轻松地使同一扩展在多台计算机上可用,以及对扩展安装、更新和删除的调度操作的支持。这避免了每次关闭和重新启动集成开发环境的需要。对于扩展作者,Visual Studio 2017 引入了。vsix 文件格式,需要指定扩展先决条件(工作负载或组件),并允许通过创建程序集的本机映像和控制目标文件夹来控制扩展行为。