Introducción a las extensiones de editor y servicio de lenguaje
Puede usar extensiones de editor para agregar características del servicio de lenguaje, como esquematización, coincidencia de llaves, IntelliSense y bombillas a su propio lenguaje de programación o a cualquier tipo de contenido. También puede personalizar la apariencia y el comportamiento del editor de Visual Studio, por ejemplo, colorear texto, márgenes, adornos y otros elementos visuales. También puede definir su propio tipo de contenido y especificar la apariencia y el comportamiento de las vistas de texto en las que aparece el contenido.
Para empezar a escribir extensiones de editor, use las plantillas de proyecto del editor que se instalan como parte del SDK de Visual Studio. El SDK de Visual Studio es un conjunto descargable de herramientas que facilitan el desarrollo de extensiones de Visual Studio, ya sea mediante VSPackages o mediante Managed Extensibility Framework (MEF).
Nota:
Para obtener más información sobre el SDK de Visual Studio, consulte SDK de Visual Studio.
Se recomienda obtener información sobre los siguientes conceptos y tecnologías antes de escribir sus propias extensiones de editor.
Extensiones de Editor y Windows Presentation Foundation (WPF)
La interfaz de usuario (UI) del editor de Visual Studio se implementa mediante Windows Presentation Foundation (WPF). WPF proporciona una experiencia visual enriquecida y un modelo de programación coherente que separa los aspectos visuales del código de la lógica de negocios. Puede usar muchos elementos y características de WPF al crear extensiones de editor. Para obtener más información, consulte Windows Presentation Foundation.
Las extensiones managed Extensibility Framework (MEF) y editor
El editor de Visual Studio usa Managed Extensibility Framework (MEF) para administrar sus componentes y extensiones. El MEF también permite a los desarrolladores crear extensiones para una aplicación host como Visual Studio. En este marco, se define una extensión según un contrato MEF y se exporta como parte de componente MEF. La aplicación host administra los elementos de componente al buscarlos, registrarlos y asegurarse de que se aplican al contexto correcto.
Nota:
Para obtener más información sobre el MEF en el editor, consulte Managed Extensibility Framework en el editor.
Puntos de extensión y extensiones del editor de Visual Studio
Los puntos de extensión del editor son partes del componente MEF que puede personalizar y extender. En algunos casos, extiende el punto de extensión implementando una interfaz y exportándola junto con los metadatos correctos. En otros casos, simplemente declara una extensión y la exporta como un tipo determinado.
A continuación se muestran algunos de los tipos básicos de extensiones de editor:
Márgenes y barras de desplazamiento
Etiquetas
Adornos
Opciones
IntelliSense
Para obtener más información sobre los puntos de extensión del editor, consulte Language service and editor extension points (Servicios de lenguaje y puntos de extensión del editor).
Implementación de extensiones de editor
En Visual Studio, se implementan extensiones de editor agregando un archivo de metadatos denominado source.extension.vsixmanifest a la solución, compilando la solución y agregando una copia de los archivos binarios y el manifiesto en una carpeta conocida para Visual Studio. El archivo de manifiesto define los hechos básicos sobre la extensión (por ejemplo, nombre, autor, versión y tipo de contenido). Para obtener más información sobre el archivo de manifiesto VSIX y cómo implementar extensiones, consulte Envío de extensiones de Visual Studio.
Al instalar una extensión en un equipo, incluya los archivos binarios y el manifiesto en una subcarpeta de carpeta que se conoce como Visual Studio.
Advertencia
No tiene que preocuparse por los detalles de los manifiestos y las ubicaciones de implementación si usa una de las plantillas de extensibilidad del editor que se incluyen en Visual Studio. Las plantillas contienen todo lo necesario para registrar e implementar una extensión.
Ejecución de extensiones en la instancia experimental
Puede aislar la versión de trabajo de Visual Studio mientras desarrolla una extensión si la implementa en la siguiente carpeta experimental (en Windows Vista y Windows 7):
{%LOCALAPPDATA%}\VisualStudio\10.0Exp\Extensions\{Company}\{ExtensionID}
donde %LOCALAPPDATA% es el nombre del usuario que ha iniciado sesión, Company es el nombre de la empresa propietaria de la extensión y ExtensionID es el identificador de la extensión.
Al implementar una extensión en la ubicación experimental, se ejecuta en modo de depuración. Se inicia una segunda instancia de Visual Studio y se denomina Instancia experimental de Microsoft Visual Studio.
Administración de extensiones
Las extensiones a Visual Studio se muestran en Extensiones y Novedades (en el menú Herramientas). Si va a probar una extensión en la instancia experimental, se muestra en Extensiones y Novedades en la instancia experimental, pero no aparece en la instancia de desarrollo.
Para obtener más información, vea Buscar y usar extensiones de Visual Studio.
Uso de plantillas para crear extensiones de editor
Puede usar plantillas de editor para crear extensiones MEF que personalicen clasificadores, adornos y márgenes. Hay plantillas para proyectos de C# y Visual Basic. Para obtener más información, vea Creación de una extensión con una plantilla de elemento de editor.
También puede usar la plantilla proyecto VSIX para crear extensiones. Esta plantilla solo proporciona los elementos necesarios para implementar cualquier tipo de extensión e incluye el archivo source.extension.vsixmanifest , las referencias de ensamblado necesarias y un archivo de proyecto que incluye las tareas de compilación que permiten implementar la extensión. Para obtener más información, consulte Plantilla de proyecto VSIX.
También puede crear componentes MEF del editor a partir de una extensión de paquete de Visual Studio. Consulte los siguientes tutoriales para obtener más información:
Tutorial: Uso de un comando de shell con una extensión del editor
Tutorial: Uso de una tecla de método abreviado con una extensión del editor