Compatibilidad con RPC del editor

Dado que el nuevo modelo de extensibilidad de Visual Studio está completamente en un proceso independiente y la comunicación entre el proceso de extensión y el proceso de Visual Studio se produce a través de una secuencia, todas las API tienen que operar en algún nivel con tipos de datos serializables. Normalmente, las extensiones pueden omitir estos detalles de implementación. En algunos escenarios, es posible que una extensión tenga que interactuar directamente con los servicios RPC adquiridos desde this.Extensibility.ServiceBroker.

Tipos RPC serializables

Para facilitar las interacciones con los servicios RPC, el modelo de objetos expone las propiedades RpcContract en la mayoría de los tipos principales y los siguientes tipos RPC serializables:

  • VersionedTextDocumentRange - 1:1 versión serializable de , a la que puede acceder a través de Spanla RpcContract propiedad . Este tipo debe usarse en la mayoría de los contratos RPC entre procesos.
  • VersionedTextDocumentPosition - 1:1 versión serializable de , a la que puede acceder a través de Positionla RpcContract propiedad . Este tipo debe usarse en la mayoría de los contratos RPC entre procesos.
  • Range - Versión serializable de Span, omitiendo el URI y el número de versión.
  • Microsoft.VisualStudio.RpcContracts.Utilities.Position - Versión serializable de , omitiendo el URI y el número de Positionversión.
  • TextView - 1:1 forma serializada de , a la que puede acceder a través de ITextViewla RpcContract propiedad .
  • TextDocument - 1:1 forma serializada de a través de ITextDocument la RpcContract propiedad .

En lugar de VersionedTextDocumentRange y VersionedTextDocumentPosition, Range y Microsoft.VisualStudio.RpcContracts.Utilities.Position omiten el URI y la versión del documento, lo que hace que sea una representación serializable más pequeña. Este tipo se debe usar en contratos RPC que contienen muchos equivalentes de intervalo o intervalo que necesitan reducir su tamaño de carga para el rendimiento. Estos contratos RPC deben pasar el URI del documento y la versión de los intervalos o intervalos a los que se va a crear una instancia Span de IEditorHostServicePosition. IEditorHostService interfaces con copias locales de extensión del búfer de texto y administra la apertura y cierre de documentos descritos por los tipos RPC.

Obtenga más información sobre la interfaz de usuario remota, el modelo RPC usado en VS. Extensiibilidad en la interfaz de usuario remota.