Introducción a la extensibilidad de VisualStudio.Extensibility para usuarios de VSSDK

Aunque las extensiones normalmente se han cargado en el proceso de Visual Studio, VisualStudio.Extensibility aporta la mayoría de las extensiones de Visual Studio fuera de proceso. Este modelo fuera de proceso permite crear extensiones más confiables y eficaces. En la siguiente documentación se describe:

  • La arquitectura general del nuevo modelo de extensibilidad
  • Cómo aprovechar las nuevas API del modelo de extensibilidad
  • Cómo compilar y F5 depurar una extensión con el nuevo modelo
  • Recursos y ejemplos de código para empezar a escribir una extensión con el nuevo modelo

Acerca del modelo de extensibilidad de VisualStudio.Extensibility

El nuevo modelo de extensibilidad de VisualStudio.Extensibility tiene como objetivo abordar muchos de los problemas que experimentan los desarrolladores al usar y escribir extensiones en Visual Studio mediante el modelo anterior. Entre los problemas se incluyen:

  • Bloqueos y bloqueos causados por la extensión de Visual Studio y otras extensiones instaladas
  • Documentación y API no actualizadas incoherentes, requisitos para experiencia especializada y arquitectura abrumadora
  • Reinicio de Visual Studio necesario para instalar extensiones
  • No se admite .NET Core

Escribir extensiones con VisualStudio.Extensibility proporciona las siguientes ventajas:

  • Mayor confiabilidad : las extensiones escritas con el nuevo modelo están fuera de proceso y no bloquean la interfaz de usuario de Visual Studio. Esto significa que si la extensión se bloquea, VS no se bloqueará como resultado.
  • Reducción de la complejidad de la API: la API del nuevo modelo se ha creado desde el principio para ser más coherente y fácil de implementar mientras conserva la funcionalidad avanzada del modelo anterior.
  • Solo .NET: para beneficiarse de las mejoras más recientes en .NET y C#, el nuevo modelo de extensibilidad solo admitirá .NET para el hospedaje fuera del proceso y se hospeda en un proceso de .NET.
  • Compatibilidad con .NET Core: las extensiones fuera de proceso pueden aprovechar la compatibilidad con versiones más recientes de .NET y las ventajas que aportan.
  • Funcionalidad de carga activa: las extensiones escritas con el nuevo modelo se pueden instalar y cargar sin necesidad de reiniciar Visual Studio (excepto las extensiones que requieren requisitos previos de componentes de Visual Studio que aún no se han instalado).
  • Plataforma entre CPU: dado que la implementación subyacente se basa en servicios asincrónicas compatibles con RPC y se basa en .NET, todas las extensiones se ejecutarán en todas las plataformas de CPU compatibles con el entorno de ejecución de .NET.

Tecnología

El modelo de extensibilidad de VisualStudio.Extensibility se basa principalmente en contratos RPC que se proporcionan como servicios asincronados desde Visual Studio. Las extensiones se hospedan en un proceso externo de ServiceHub que se comunica con Visual Studio a través de RPC. Las extensiones usan los servicios proporcionados por Visual Studio y también pueden proporcionar servicios al proceso de Visual Studio en determinados casos.

Los paquetes de extensibilidad que se proporcionan como parte del SDK constan de clases base, métodos de utilidad y objetos contenedoros alrededor de estos contratos RPC, con el objetivo de facilitar el uso y la detección del área expuesta de extensibilidad. Nuestro objetivo es facilitar a los autores de extensiones contribuir rápidamente al ecosistema de Visual Studio.

Para más información, consulte estos documentos y tutoriales para empezar: