Novedades del SDK de Visual Studio 2019

El SDK de Visual Studio tiene las siguientes características nuevas y actualizadas para Visual Studio 2019.

Advertencia de extensiones cargadas automáticamente de forma sincrónica

Ahora, los usuarios verán una advertencia si alguna de sus extensiones instaladas se carga automáticamente al iniciarse. Puede obtener más información sobre la advertencia en Extensiones cargadas automáticamente de forma sincrónica.

SDK de Visual Studio único y unificado

Ahora puede obtener todos los recursos del SDK de Visual Studio a través de un único paquete NuGet Microsoft.VisualStudio.SDK.

Mejoras en el registro del editor

Desde su creación, Visual Studio ha admitido el registro de editor personalizado, donde un editor puede declarar su afinidad con extensiones específicas (por ejemplo, .xaml y .rc) o que es adecuada para cualquier extensión (.*). A partir de la versión 16.1 de Visual Studio 2019, ampliamos la compatibilidad con el registro del editor.

Nombres de archivo

Además de, o en lugar de, registrar la compatibilidad con una extensión de archivo determinada, un editor puede registrar que admite nombres de archivo específicos aplicando el nuevo ProvideEditorFilename atributo al paquete del editor.

Por ejemplo, un editor que admita todos los archivos .json aplicaría este ProvideEditorExtension atributo a su paquete:

[ProvideEditorExtension(typeof(MyEditor), ".json", MyEditor.Priority)]

A partir de la versión 16.1, si MyEditor solo admite un par de archivos .json conocidos, en su lugar puede aplicar estos ProvideEditorFilename atributos a su paquete:

[ProvideEditorFilename(typeof(MyEditor), "particular.json", MyEditor.Priority)]
[ProvideEditorFilename(typeof(MyEditor), "special.json",    MyEditor.Priority)]

UIContexts

Un editor puede registrar uno o varios UIContexts que representan cuando está habilitado. UIContexts se registran aplicando una o varias instancias del ProvideEditorUIContextAttribute paquete que registra el editor.

Si un editor ha registrado UIContexts:

  • Si al menos uno de sus UIContexts registrados está activo cuando se abre un archivo con la extensión especificada, el editor se incluye en la búsqueda del editor.
  • Si ninguno de los UIContexts registrados está activo, el editor no se incluye en la búsqueda del editor.

Si un editor no registra ningún UIContexts, siempre se incluye en la búsqueda del editor esa extensión.

Por ejemplo, si un editor solo está disponible cuando un proyecto de C# está abierto, puede declarar esta afinidad aplicando un ProvideEditorUIContext atributo:

[ProvideEditorUIContext(typeof(MyEditor), KnownUIContexts.CSharpProjectContext)]