Criar uma extensão com um comando de menu
Este passo a passo mostra como criar uma extensão com um comando de menu que inicia o Bloco de Notas.
Criar um comando de menu
Crie um projeto de VSIX denominado FirstMenuCommand. Você pode encontrar o modelo de projeto VSIX na caixa de diálogo Novo Projeto pesquisando por "vsix".
Quando o projeto abrir, adicione um modelo de item de comando personalizado denominado FirstCommand. No Gerenciador de Soluções, clique com o botão direito do mouse no nó do projeto e selecione Adicionar>Novo Item. Na caixa de diálogo Adicionar novo item, vá para Extensibilidade de>Itens C# e selecione Comando. No campo Nome na parte inferior da janela, altere o nome do arquivo de comando para FirstCommand.cs.
Compile o projeto e comece a depuração.
A instância experimental do Visual Studio é exibida. Para obter mais informações sobre instância experimental, consulte A instância experimental.
Na instância experimental, abra a janela Extensões>Gerenciar extensões. Você deveria ver a extensão FirstMenuCommand aqui. (Se você abrir Gerenciar extensões em sua instância de trabalho do Visual Studio, não verá FirstMenuCommand).
Vá então para o menu Ferramentas na instância experimental. Você deveria ver o comando Invocar FirstCommand. Neste ponto, o comando abre uma caixa de mensagens que diz FirstCommand Inside FirstMenuCommand.FirstCommand.MenuItemCallback(). Na próxima seção, veremos como iniciar realmente o Bloco de Notas a partir desse comando.
Alterar o manipulador de comandos de menu
Agora vamos atualizar o manipulador de comandos para iniciar o Bloco de Notas.
Pare a depuração e volte para sua instância de trabalho do Visual Studio. Abra o arquivo FirstCommand.cs e adicione o seguinte usando a instrução:
using System.Diagnostics;
Localize o construtor FirstCommand privado. Aqui é onde o comando é conectado ao serviço de comando e o manipulador de comandos especificado. Altere o nome do manipulador de comandos para StartNotepad, da seguinte maneira:
private FirstCommand(AsyncPackage package, OleMenuCommandService commandService) { this.package = package ?? throw new ArgumentNullException(nameof(package)); commandService = commandService ?? throw new ArgumentNullException(nameof(commandService)); CommandID menuCommandID = new CommandID(CommandSet, CommandId); // Change to StartNotepad handler. MenuCommand menuItem = new MenuCommand(this.StartNotepad, menuCommandID); commandService.AddCommand(menuItem); }
Remova o método
Execute
e adicione um métodoStartNotepad
, que iniciará apenas o Bloco de Notas:private void StartNotepad(object sender, EventArgs e) { ThreadHelper.ThrowIfNotOnUIThread(); Process proc = new Process(); proc.StartInfo.FileName = "notepad.exe"; proc.Start(); }
Agora faça um teste. Ao iniciar a depuração do projeto e clicar em Ferramentas>Invocar FirstCommand, uma instância do Bloco de Notas deveria aparecer.
Você pode usar uma instância da classe Process para executar qualquer executável, não só o Bloco de Notas. Por exemplo, experimente o mesmo com
calc.exe
.
Limpar o ambiente experimental.
Se você estiver desenvolvendo várias extensões ou explorando apenas resultados com diferentes versões do código de extensão, seu ambiente experimental pode deixar de funcionar como deveria. Nesse caso, você deveria executar o script de redefinição. Ele é denominado Redefinir a instância experimental do Visual Studio e fornecido como parte do SDK do Visual Studio. Esse script remove todas as referências às suas extensões do ambiente experimental, de forma que você possa começar do zero.
Você pode chegar até esse script de uma das duas seguintes maneiras:
Na área de trabalho, localize Redefinir a instância experimental do Visual Studio.
Na linha de comando, execute o seguinte:
<VSSDK installation>\VisualStudioIntegration\Tools\Bin\CreateExpInstance.exe /Reset /VSInstance=<version> /RootSuffix=Exp && PAUSE
Implantar sua extensão
Agora que você tem sua extensão da ferramenta funcionando como gostaria, é hora de pensar em compartilhá-la com seus amigos e colegas. Isso é fácil, desde que eles tenham o Visual Studio 2015 instalado. Tudo o que você precisa fazer é enviar a eles o arquivo .vsix que criou. (Certifique-se de que ele seja compilado no modo de Versão.)
Você pode encontrar o arquivo .vsix para essa extensão no diretório bin FirstMenuCommand. Supondo especificamente que você tenha criado a configuração de versão, ela estará em:
<diretório do código>\FirstMenuCommand\FirstMenuCommand\bin\Release\FirstMenuCommand.vsix
Para instalar a extensão, seu amigo precisa fechar todas as instâncias abertas do Visual Studio e clicar duas vezes no arquivo .vsix, o que abre o Instalador VSIX. Os arquivos são copiados para diretório %LocalAppData%\Microsoft\VisualStudio<version>\Extensions.
Quando seu amigo abrir o Visual Studio novamente, ele encontrará a extensão FirstMenuCommand em Ferramentas>Extensões e atualizações. Também podem acessar Extensões e atualizações para desinstalar ou desativar a extensão.
Próximas etapas
Este passo a passo mostrou apenas uma pequena parte do que você pode fazer com uma extensão do Visual Studio. Veja aqui uma pequena lista de outras coisas (bastante fáceis) que você pode fazer com as extensões do Visual Studio:
Você pode fazer muito mais coisas com um simples comando de menu:
Adicionar seu próprio ícone: Adicionar ícones aos comandos de menu
Alterar o texto do comando de menu: Alterar o texto de um comando de menu
Adicionar um atalho de menu a um comando: Vincular atalhos de teclado a itens de menu
Adicionar diferentes tipos de comandos, menus e barras de ferramentas: Estender menus e comandos
Adicionar janelas de ferramentas e estender janelas de ferramentas integradas do Visual Studio: Estender e personalizar janelas de ferramentas
Adicionar IntelliSense, sugestões de código e outros recursos aos editores de código existentes: Estender o editor e serviços de linguagem
Adicionar páginas de Opções e Propriedades, bem como configurações de usuário à sua extensão: Estender propriedades e a janela Propriedade e Estender configurações e opções de usuários
Outros tipos de extensões exigem um pouco mais de trabalho, como criar um novo tipo de projeto (Estender projetos) ou criar um novo tipo de editor (Criar editores e designers personalizados).