Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este documento é um início rápido que mostra como criar a sua primeira extensão usando o VisualStudio.Extensibilidade. A extensão fica fora do processo, ou seja, fora do processo do Visual Studio.
Pré-requisitos
- Visual Studio 2022 versão 17.9 Preview 1 ou superior com carga de trabalho
Visual Studio extension development.
Criar o projeto de extensão
- Utilize o modelo
VisualStudio.Extensibility Projectpara criar um novo projeto de extensibilidade.
Neste ponto, está pronto para começar a expandir o Visual Studio adicionando comandos e componentes do editor à sua extensão.
A classe Extensão
O modelo cria uma classe que herda de Extension. Esta classe é a primeira que é instanciada quando a sua extensão é carregada. No método InitializeServices, pode adicionar os seus próprios serviços à coleção de serviços para disponibilizá-los para injeção de dependências.
[VisualStudioContribution]
internal class ExtensionEntrypoint : Extension
{
protected override void InitializeServices(IServiceCollection serviceCollection)
{
base.InitializeServices(serviceCollection);
// You can configure dependency injection here by adding services to the serviceCollection.
}
}
Também pode ver o atributo VisualStudioContribution que é usado para marcar componentes de extensão que devem ser consumidos por Visual Studio. Este atributo pode ser aplicado a classes que implementam IVisualStudioContributionClass ou propriedades estáticas de um tipo que implementa IVisualStudioContributionProperty.
Adiciona o teu primeiro comando
O modelo cria Command1.cs como o seu primeiro processador de comandos, que pode usar como ponto de partida. Como queremos tornar Visual Studio ciente deste comando, e a classe Command implementa IVisualStudioContributionClass, o comando é marcado com o atributo VisualStudioContribution.
[VisualStudioContribution]
internal class Command1 : Command
{
O comando tem uma propriedade de configuração chamada CommandConfiguration, que define o seu nome de visualização, ícone e localização no Extensions menu.
public override CommandConfiguration CommandConfiguration => new("%MyExtension.Command1.DisplayName%")
{
// Use this object initializer to set optional parameters for the command. The required parameter,
// displayName, is set above. DisplayName is localized and references an entry in .vsextension\string-resources.json.
Icon = new(ImageMoniker.KnownValues.Extension, IconSettings.IconAndText),
Placements = new[] { CommandPlacement.KnownPlacements.ExtensionsMenu },
};
As propriedades de configuração são avaliadas pelo compilador C# ao construir a extensão e os seus valores são guardados como metadados de extensão para que o Visual Studio possa lê-los sem carregar a assembly da extensão. Por esta razão, as propriedades de configuração têm restrições adicionais em comparação com as propriedades normais (por exemplo, devem ser apenas de leitura).
Pode ver que o nome de exibição do comando é "%MyExtension.Command1.DisplayName%", que faz referência à MyExtension.Command1.DisplayName cadeia no .vsextension/string-resources.json ficheiro, permitindo que esta cadeia seja localizada.
Quando o comando é executado, o Visual Studio invoca o método ExecuteCommandAsync, onde pode colocar um ponto de paragem. Podes utilizar o argumento context ou o objeto this.Extensibility para interagir com Visual Studio.
Por exemplo, um controlador de comandos pode ser o seguinte:
public override async Task ExecuteCommandAsync(IClientContext context, CancellationToken cancellationToken)
{
await context.ShowPromptAsync(
"Hello from an extension!",
PromptOptions.OK,
cancellationToken);
}
Para mais informações sobre como adicionar comandos, consulte a secção Comandos .
Depurar a sua extensão
Certifica-te de que o teu projeto de extensão está selecionado como projeto de arranque no Visual Studio e carrega em
F5para iniciar a depuração.Pressionar
F5constrói a tua extensão e implementa-a na instância experimental da versão Visual Studio estás a usar. O depurador deve ser ligado assim que a sua extensão estiver carregada.Pode encontrar o novo comando no
Extensionsmenu, como mostrado na imagem seguinte:
Passos seguintes
Se perdeu os resumos introdutórios, consulte Bem-vindo à documentação VisualStudio.Extensibilidade.
Agora crie uma extensão um pouco mais interessante; ver Criar uma extensão simples.