Novidades do SDK do Visual Studio 2019

O SDK do Visual Studio tem os seguintes recursos novos e atualizados para o Visual Studio 2019.

Aviso de extensões carregadas automaticamente de forma síncrona

Os usuários agora verão um aviso se qualquer uma de suas extensões instaladas for carregada automaticamente de forma síncrona na inicialização. Você pode saber mais sobre o aviso em Extensões carregadas automaticamente de forma síncrona.

SDK único e unificado do Visual Studio

Agora você pode obter todos os ativos do SDK do Visual Studio por meio de um único pacote NuGet Microsoft.VisualStudio.SDK.

Aprimoramentos de registro do editor

Desde sua criação, o Visual Studio oferece suporte ao registro de editor personalizado, onde um editor pode declarar sua afinidade com extensões específicas (por exemplo, .xaml e .rc) ou que é adequado para qualquer extensão (.*). A partir do Visual Studio 2019 versão 16.1, ampliamos o suporte para registro de editor.

Nomes de arquivos

Além de, ou em vez de, registrar o suporte para uma extensão de arquivo específica, um editor pode registrar que ele suporta nomes de arquivos específicos aplicando o novo ProvideEditorFilename atributo ao pacote do editor.

Por exemplo, um editor que oferece suporte a todos os arquivos .json aplicaria esse ProvideEditorExtension atributo ao seu pacote:

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

A partir da versão 16.1, se o MyEditor suportar apenas alguns arquivos .json conhecidos, ele poderá aplicar estes ProvideEditorFilename atributos ao seu pacote:

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

UIContextos

Um editor pode registrar um ou mais UIContext que representam quando ele está habilitado. UIContexts são registrados aplicando uma ou mais instâncias de ProvideEditorUIContextAttribute ao pacote que registra o editor.

Se um editor tiver registrado UIContexts:

  • Se pelo menos um de seus UIContexts registrados estiver ativo quando um arquivo com a extensão dada for aberto, o editor será incluído na pesquisa do editor.
  • Se nenhum dos UIContexts registrados estiver ativo, o editor não será incluído na pesquisa do editor.

Se um editor não registrar nenhum UIContexts, ele será sempre incluído na pesquisa do editor para essa extensão.

Por exemplo, se um editor só estiver disponível quando um projeto C# estiver aberto, ele poderá declarar essa afinidade aplicando um ProvideEditorUIContext atributo:

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