No início da semana passada, lançamos o
Visual Studio 2019 v.16.1 Visualização 1 (consulte as
notas de versão ). Esta é a primeira visualização da primeira atualização do Visual Studio 2019. Se você ainda não configurou para receber as versões de visualização, faça
-o agora . A versão de visualização é instalada sem problemas ao lado da versão de lançamento, para que eles não interfiram entre si. Eu recomendo que todos os autores de extensões instalem a versão Preview.
Você tem atualmente o 16.1 Preview instalado? Ótimo Aqui estão alguns recursos que você pode gostar. Detalhes sob o corte!

Suporte a projeto compartilhado
Há vários motivos pelos quais os autores de extensões às vezes precisam dividir uma extensão em vários projetos para oferecer suporte a diferentes versões do Visual Studio. Se você estiver usando uma API que não existia para uma versão anterior do Visual Studio ou se houver alterações significativas entre as versões que você deseja oferecer suporte. Agora ficou muito mais fácil dividir a extensão.
No Visual Studio 2019 v.16.1, Visualização 1, adicionamos suporte para referências ao projeto compartilhado de projetos VSIX na mesma solução.

Você pode colocar código comum em um projeto compartilhado separado, que é compilado diretamente nos projetos VSIX no momento da construção. O único código que existe nos próprios projetos VSIX é o código específico para a versão suportada do Visual Studio. O resultado são dois VSIXs separados que têm como alvo seu próprio intervalo de versões do Visual Studio e compartilham a maior parte do código de um projeto comum. Confira o código
da extensão do Extension Manager que faz exatamente isso.
Não há mais necessidade de um arquivo .resx
Ao adicionar comandos, menus etc. usando um arquivo VSCT, você deve especificar o arquivo .resx marcado com a propriedade
MergeWithCTOMSBuild . Modelos no Visual Studio cuidam da adição desse arquivo e também adicionam o arquivo .ico referenciado pelo arquivo .resx. No entanto, a necessidade de .resx é um detalhe de implementação e a maioria das extensões não precisa usá-lo.
Para simplificar o projeto VSIX, o requisito do arquivo .resx /.ico foi removido para aqueles que usam o pacote NuGet mais recente, o
Microsoft.VSSDK.BuildTools 16.0 ou posterior.
Nos bastidores, o pacote NuGet fornece um .resx vazio para compilação com a propriedade MergeWithCTO até você registrar o seu próprio no projeto.
Reconhecimento por monitor
Suporte adicional por monitor está incluído no 16.1 com o .NET Framework 4.8 instalado. A interface do usuário do Windows Forms agora é melhor na escala de DPI nos monitores. No entanto, isso pode causar problemas de interface do usuário na sua extensão após a instalação do .NET Framework 4.8.
Ao usar o Windows Forms em uma extensão, você pode mapear o comportamento de dimensionamento do Visual Studio 2017
compactando a criação do seu formulário ou controle no
DpiAwareness.EnterDpiScope .
using (DpiAwareness.EnterDpiScope(DpiAwarenessContext.SystemAware)) using (var form = new MyForm()) { form.ShowDialog(); }
Tudo que você precisa fazer é adicionar um link ao pacote
Microsoft.VisualStudio.DpiAwareness NuGet. Use este pacote em extensões direcionadas para versões anteriores do Visual Studio, mas lembre-se de que ele só funcionará quando usado na versão 16.1 e posterior. Portanto, ele pode ser usado em extensões que abrangem várias versões do Visual Studio.
Para simplificar a simulação de vários monitores trabalhando com diferentes escalas de DPI, o engenheiro da equipe do Visual Studio IDE criou uma
pequena ferramenta conveniente e a colocou no GitHub . A equipe usou essa ferramenta quando adicionou suporte à conscientização por monitor, para que você também a ache útil.
Leia mais sobre como trabalhar com
a conscientização por monitor .
Inicialização síncrona desativada
Há 18 meses, enviamos um email aos parceiros de extensão anunciando a obsolescência da inicialização síncrona de pacotes de extensão. Há um ano, publicamos
uma postagem no blog com informações mais detalhadas de que o pacote de inicialização automática de forma síncrona não será suportado em uma versão futura do Visual Studio. Esta versão é 16.1.
Existem ótimos
exemplos de como atualizar para o
AsyncPackage com o carregamento em segundo plano ativado e a maioria das extensões hoje já fizeram a transição. Se você ainda não o fez, agora é a hora de fazê-lo antes de 16.1 sair do modo de visualização.
Novo SDK de metapacote
O metapacote
Microsoft.VisualStudio.SDK é um pacote NuGet separado que faz referência a todos os vários pacotes do Visual Studio que compõem o SDK. A coisa mais legal sobre o metapacote é que você tem acesso a todas as interfaces e serviços. Além disso, você também evita problemas com versões incompatíveis de pacotes.
Quando lançamos o Visual Studio 2019 (16.0), o modelo de projeto VSIX fazia referência à versão 15.9 do metapacote do SDK. Isso ocorreu porque a versão 16.0 ainda estava em desenvolvimento. Todos os pacotes individuais tiveram que ser publicados no NuGet antes que pudéssemos obter dependência deles do meta pacote.
A boa notícia é que agora estamos finalmente prontos para a versão 16.0. Se sua extensão suportar a versão 16.0, você deverá usá-la. Você também pode aprender mais sobre
versões de extensão aqui .