VSSDK 用户的 VisualStudio.Extensibility 简介

虽然扩展通常已加载到 Visual Studio 进程中,但 VisualStudio.Extensibility 将大多数 Visual Studio 扩展从进程外引入。 通过此过程外模型,可以创建更可靠且性能更高的扩展。 以下文档介绍了:

  • 新扩展性模型的一般体系结构
  • 如何利用新的扩展性模型的 API
  • 如何使用新模型编译和 F5 调试扩展
  • 用于开始使用新模型编写扩展的资源和代码示例

关于 VisualStudio.Extensibility 模型

新的 VisualStudio.Extensibility 模型旨在解决开发人员在使用旧模型在 Visual Studio 中使用和编写扩展时遇到的许多问题。 这些问题包括:

  • 导致扩展的崩溃和 Visual Studio 和其他已安装扩展的挂起
  • 不一致、过时的文档和 API、专业知识要求和压倒性的体系结构
  • 重启安装扩展所需的 Visual Studio
  • 不支持 .NET Core

使用 VisualStudio.Extensibility 编写扩展具有以下优势:

  • 可靠性提高 – 使用新模型编写的扩展是无序的,不会阻止 Visual Studio UI。 这意味着,如果扩展崩溃,VS 将不会因此崩溃。
  • 降低 API 复杂性 - 新模型的 API 从头开始构建,在保留旧模型的高级功能的同时,更加凝聚力和更易于实现。
  • 仅限 .NET – 为了受益于 .NET 和 C# 上的最新增强功能,新的扩展性模型将仅支持 .NET 进行进程外托管,并托管在 .NET 进程中。
  • .NET Core 支持 - 进程外扩展可以利用对较新的 .NET 版本的支持以及它们带来的好处。
  • 热加载功能 – 可以使用新模型编写的扩展可以安装和加载,而无需重启 Visual Studio(不包括需要尚未安装的 Visual Studio 组件先决条件的扩展)。
  • 跨 CPU 平台 – 由于基础实现基于 RPC 兼容的中转服务,并且基于 .NET,因此所有扩展都将在 .NET 运行时支持的所有 CPU 平台上运行。

技术

VisualStudio.Extensibility 模型主要基于从 Visual Studio 中作为中转服务提供的 RPC 协定构建。 扩展托管在外部 ServiceHub 进程中,通过 RPC 与 Visual Studio 通信。 扩展都利用 Visual Studio 提供的服务,在某些情况下还可以向 Visual Studio 进程提供服务。

作为 SDK 的一部分提供的扩展性包包括这些 RPC 协定周围的基类、实用工具方法和包装器对象,目的是使扩展性外围应用更易于使用和发现。 我们的目标是使扩展作者能够更轻松地快速参与 Visual Studio 生态系统。

若要了解详细信息,请检查以下文档和演练来帮助你入门: