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

  1. Crie um projeto VSIX chamado FirstMenuCommand. Você pode encontrar o modelo de projeto VSIX na caixa de diálogo Novo projeto pesquisando por "vsix".

  2. Quando o projeto for aberto, adicione um modelo de item de comando personalizado chamado 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>em C# e selecione Comando. No campo Nome na parte inferior da janela, altere o nome do arquivo de comando para FirstCommand.cs.

  3. Compile o projeto e comece a depuração.

    A instância experimental do Visual Studio aparece. Para obter mais informações sobre a instância experimental, consulte A instância experimental.

  4. Na instância experimental, abra a janela Extensões de gerenciamento de extensões>. Você deve ver a extensão FirstMenuCommand aqui. (Se você abrir Gerenciar extensões em sua instância de trabalho do Visual Studio, você não verá FirstMenuCommand).

Agora vá para o menu Ferramentas na instância experimental. Você deve ver o comando Invoke FirstCommand . Neste ponto, o comando exibe uma caixa de mensagem que diz FirstCommand Inside FirstMenuCommand.FirstCommand.MenuItemCallback(). Veremos como realmente iniciar o Bloco de Notas a partir deste comando na próxima seção.

Alterar o manipulador de comandos de menu

Agora vamos atualizar o manipulador de comandos para iniciar o Bloco de Notas.

  1. Pare a depuração e volte para sua instância de trabalho do Visual Studio. Abra o arquivo FirstCommand.cs e adicione a seguinte instrução using:

    using System.Diagnostics;
    
  2. Localize o construtor FirstCommand privado. É aqui que 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);
    }
    
  3. Remova o método e adicione um StartNotepad método, que apenas iniciará o Execute bloco de notas:

    private void StartNotepad(object sender, EventArgs e)
    {
        ThreadHelper.ThrowIfNotOnUIThread();
    
        Process proc = new Process();
        proc.StartInfo.FileName = "notepad.exe";
        proc.Start();
    }
    
  4. Agora experimente. Quando você começar a depurar o projeto e clicar em Ferramentas>Invoke FirstCommand, você verá uma instância do bloco de notas aparecer.

    Você pode usar uma instância da classe para executar qualquer executável, não apenas o Process bloco de notas. Experimente com calc.exe, por exemplo.

Limpar o ambiente experimental

Se você estiver desenvolvendo várias extensões, ou apenas explorando resultados com diferentes versões do seu código de extensão, seu ambiente experimental pode parar de funcionar como deveria. Nesse caso, você deve executar o script de redefinição. Ele é chamado de 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, para que você possa começar do zero.

Você pode acessar esse script de duas maneiras:

  1. Na área de trabalho, localize Redefinir a instância experimental do Visual Studio.

  2. 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 de ferramenta funcionando da maneira que deseja, é 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 você criou. (Certifique-se de compilá-lo no modo Release.)

Você pode encontrar o arquivo .vsix para essa extensão no diretório FirstMenuCommand bin. Especificamente, supondo que você tenha criado a configuração Release, ela estará em:

<diretório> de 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, em seguida, clicar duas vezes no arquivo .vsix , que exibe o VSIX Installer. Os arquivos são copiados para o diretório %LocalAppData%\Microsoft\VisualStudio<version>\Extensions .

Quando seu amigo abrir o Visual Studio novamente, ele encontrará a extensão FirstMenuCommand em Extensões e atualizações de ferramentas>. Eles também podem ir para 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. Aqui está uma pequena lista de outras coisas (razoavelmente fáceis) que você pode fazer com extensões do Visual Studio:

  1. Você pode fazer muito mais coisas com um comando de menu simples:

    1. Adicione seu próprio ícone: adicione ícones aos comandos de menu

    2. Alterar o texto do comando de menu: Alterar o texto de um comando de menu

    3. Adicionar um atalho de menu a um comando: Vincular atalhos de teclado a itens de menu

  2. Adicionar diferentes tipos de comandos, menus e barras de ferramentas: Estender menus e comandos

  3. Adicionar janelas de ferramentas e estender as janelas de ferramentas internas do Visual Studio: Estender e personalizar janelas de ferramentas

  4. Adicionar IntelliSense, sugestões de código e outros recursos aos editores de código existentes: estender o editor e os serviços de idioma

  5. Adicionar opções e páginas de propriedades e configurações de usuário à sua extensão: Estender propriedades e a janela Propriedade e Estender configurações e opções do usuário

    Outros tipos de extensões exigem um pouco mais de trabalho, como criar um novo tipo de projeto (Estender projetos), criar um novo tipo de editor (Criar editores e designers personalizados) ou implementar sua extensão em um shell isolado: shell isolado do Visual Studio