Passo a passo: estendendo o Visual Studio para MacExtending Visual Studio for Mac Walkthrough

Este tópico guiará você pela compilação de um pacote de extensão simples.This topic guides you through building a simple extension package. O pacote de extensão criará um novo Comando no menu Editar do Visual Studio para Mac que permite ao usuário inserir a data e a hora atuais em um documento open text.The extension package will create a new Command in Visual Studio for Mac's Edit menu that allows the user to insert the current date and time into an open text document.

Este exemplo usa o Criador de Suplementos.This example uses the Add-in Maker. O Criador de Suplementos cria um novo modelo de Projeto e o popula com os arquivos necessários para o nosso pacote de extensão personalizado.The Add-In Maker creates a new Project template and populates it with the required files for our custom extension package.

  1. Começar iniciando o Visual Studio para Mac, se ele ainda não estiver aberto:Begin by launching Visual Studio for Mac if it's not already open:

    Captura de tela do Visual Studio para Mac

  2. Instale o Pacote de extensão do Criador de Suplementos usando o Gerenciador de Extensões.Install the Add-in Maker extension package using the Extension Manager. No menu do Visual Studio, escolha Extensões...:From the Visual Studio menu, choose Extensions...:

    Guia de Gerenciador de Suplementos

  3. Navegue para a guia Galeria e digite Addin Maker na barra de pesquisa no canto superior direito.Navigate to the Gallery tab and type Addin Maker into the top-right search bar. Selecione o Criador de Suplementos na categoria Desenvolvimento de Suplementos e clique em Instalar.Select Addin Maker from the Add-in Development category and click Install. Se nada aparecer, clique em Atualizar e pesquisar novamente:If nothing shows up, hit Refresh and search again:

    Gerenciador de Suplementos

  4. Agora que o Criador de Suplementos está instalado, você poderá começar a criar um pacote de extensão.Now that the Addin Maker is installed, you can start building an extension package. Comece criando uma nova solução.Start by creating a new solution.

  5. Na caixa de diálogo Nova Solução, escolha o modelo Outros > Diversos > Geral > Suplemento do Xamarin Studio > C# e, na tela seguinte, escolha um nome para a nova solução DateInserter:From the New Solution dialog, choose Other > Miscellaneous > General > Xamarin Studio Addin > C# template and on the following screen name the new Solution DateInserter:

    Criando uma nova solução

  6. O Visual Studio para Mac populará uma nova Solução:Visual Studio for Mac will populate a new Solution:

    Solução populada

  7. Remova todo o código de modelo em Manifest.addin.xml substitua-o pelo código a seguir:Remove the template code in Manifest.addin.xml and replace it with the following:

    <?xml version="1.0" encoding="UTF-8"?>
       <ExtensionModel>
           <Extension path = "/MonoDevelop/Ide/Commands/Edit">
               <Command id = "DateInserter.DateInserterCommands.InsertDate"
                   _label = "Insert Date"
                   defaultHandler = "DateInserter.InsertDateHandler" />
           </Extension>
    
           <Extension path = "/MonoDevelop/Ide/MainMenu/Edit">
               <CommandItem id="DateInserter.DateInserterCommands.InsertDate" />
           </Extension>
       </ExtensionModel>
    
  8. Agora você precisa configurar os arquivos que eventualmente tratarão a inserção de data e hora no editor de texto.Now you need to set up the files that will eventually handle inserting the date and time into the text editor. Clique com botão direito do mouse no nó do projeto e adicione um novo arquivo.Right-Click on the project node and add a new file. Selecione Geral > Classe Vazia e nomeie o novo arquivo InsertDateHandler:Select General > Empty Class and name the new file InsertDateHandler:

    Inserir o manipulador de datas

  9. Remova todo o código de modelo de InsertDateHandler.cs e substitua-o pelo código a seguir:Let's remove the template code from InsertDateHandler.cs and replace it with the following code:

    using MonoDevelop.Components.Commands;
    using MonoDevelop.Ide;
    using MonoDevelop.Ide.Gui;
    using System;
    
    namespace DateInserter
    {
       class InsertDateHandler : CommandHandler
       {
           protected override void Run()
           {
    
           }
    
           protected override void Update(CommandInfo info)
           {
    
           }
       }
    }
    

    Expandiremos esses dois métodos de espaço reservado mais tarde.We'll expand these two placeholder methods later.

  10. Clique com o botão direito do mouse no Projeto DateInserter e selecione Adicionar > Novo Arquivo.Right-click on the DateInserter Project and select Add > New File. Selecione Geral > Enumeração Vazia e nomeie o novo arquivo como DateInserterCommands:Select General > Empty Enumeration, and then name the new file DateInserterCommands:

    DateInserterCommands

  11. Adicione o comando InsertDate como uma nova enumeração no arquivo DateInserterCommands.cs:Add the InsertDate Command as a new enumeration in the DateInserterCommands.cs file:

    using System;
    
    namespace DateInserter
    {
      public enum DateInserterCommands
      {
          InsertDate,
      }
    }
    
  12. Neste ponto, você deve ter um pacote de extensão em funcionamento.At this point, you should have a working extension package. Você pode testá-lo salvando seu trabalho e executando o aplicativo.You can test it out by saving your work and running the application. O IDE iniciará uma nova instância do Visual Studio para Mac com o novo pacote de extensão instalado.The IDE will launch a new instance of Visual Studio for Mac with the new extension package installed. Se você navegar para o menu Editar, verá que o Visual Studio para Mac tem uma nova opção chamada Inserir Dados, conforme ilustrado na captura de tela abaixo:If you navigate to the Edit menu, you'll see that Visual Studio for Mac has a new option called Insert Date, as illustrated by the screenshot below:

    Comando Inserir Data

    Observe que selecionar Inserir Data no menu não surte efeito porque a implementação atual só tem métodos de espaço reservado.Note that selecting Insert Date from the menu has no effect as the current implementation only has placeholder methods.

  13. A estrutura está em vigor para o pacote de extensão e é hora de escrever o código que habilita a inserção da data.The framework is in place for the extension package, and it's time to write the code that powers inserting the date. Primeiro, verifique se o comando Inserir Data está habilitado apenas quando o usuário tiver arquivo de texto aberto substituindo o método Update em InsertDateHandler.cs pelo código a seguir:First, make sure that the Insert Date Command is only enabled when the user has a text file open by replacing the Update method in InsertDateHandler.cs with the following code:

    protected override void Update(CommandInfo info)
    {
      info.Enabled = IdeApp.Workbench.ActiveDocument?.Editor != null;
    }
    
  14. Atualize o método Run do comando para inserir a data e a hora com o código a seguir:Update the Command's Run method to insert the date and time with the following code:

    protected override void Run () {
      var editor = IdeApp.Workbench.ActiveDocument.Editor;
      var date = DateTime.Now.ToString ();
      editor.InsertAtCaret (date);
    
    }
    
  15. Por fim, vamos executar nosso pacote de extensão para testá-lo.Finally, let's run our extension package to test it. Na nova instância do Visual Studio para Mac, selecione Editar > Inserir Data.In the new instance of Visual Studio for Mac, select Edit > Insert Date. A data e hora atual é inserida em nosso cursor, conforme ilustrado na captura de tela abaixo:The current date and time is inserted at our caret, as illustrated by the screenshot below:

    Inserir captura de tela de data