Tutorial: Extender Visual Studio para MacExtending Visual Studio for Mac Walkthrough

Este tema le guía a lo largo del proceso de creación de un paquete de extensión sencillo.This topic guides you through building a simple extension package. El paquete de extensión crea un nuevo comando en el menú de edición de Visual Studio para Mac que permite al usuario insertar la fecha y la hora actuales en un documento de texto abierto.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.

En este ejemplo se usa el complemento Add-in Maker.This example uses the Add-in Maker. Add-in Maker crea una nueva plantilla de proyecto y la rellena con los archivos necesarios para el paquete de extensión personalizado.The Add-In Maker creates a new Project template and populates it with the required files for our custom extension package.

  1. Comience por iniciar Visual Studio para Mac si aún no está abierto:Begin by launching Visual Studio for Mac if it's not already open:

    Captura de pantalla de Visual Studio para Mac

  2. Instale el paquete de extensión Add-in Maker mediante el Administrador de extensiones.Install the Add-in Maker extension package using the Extension Manager. En el menú de Visual Studio, elija Extensiones...:From the Visual Studio menu, choose Extensions...:

    Pestaña Administrador de complementos

  3. Vaya a la pestaña Galería y escriba Addin Maker en la barra de búsqueda superior derecha.Navigate to the Gallery tab and type Addin Maker into the top-right search bar. Seleccione Addin Maker en la categoría de desarrollo de complementos y haga clic en Instalar.Select Addin Maker from the Add-in Development category and click Install. Si no aparece nada, haga clic en Actualizar y busque de nuevo:If nothing shows up, hit Refresh and search again:

    Administrador de complementos

  4. Ahora que Addin Maker está instalado, puede empezar a crear un paquete de extensión.Now that the Addin Maker is installed, you can start building an extension package. Empiece por crear una nueva solución.Start by creating a new solution.

  5. En el cuadro de diálogo Nueva solución, elija la plantilla Otros > Varios > General > Xamarin Studio Addin > C# y en la siguiente pantalla ponga el nombre DateInserter a la nueva solución:From the New Solution dialog, choose Other > Miscellaneous > General > Xamarin Studio Addin > C# template and on the following screen name the new Solution DateInserter:

    Creación de una nueva solución

  6. Visual Studio para Mac rellena una nueva solución:Visual Studio for Mac will populate a new Solution:

    Solución rellena

  7. Quite el código de plantilla de Manifest.addin.xml y sustitúyalo por lo siguiente: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. Ahora debe configurar los archivos que van a controlar la inserción de la fecha y la hora en el editor de texto.Now you need to set up the files that will eventually handle inserting the date and time into the text editor. Haga clic con el botón derecho en el nodo del proyecto y agregue un nuevo archivo.Right-Click on the project node and add a new file. Seleccione General > Clase vacía y asigne el nombre InsertDateHandler al nuevo archivo:Select General > Empty Class and name the new file InsertDateHandler:

    InsertDateHandler

  9. Quite el código de plantilla de InsertDateHandler.cs y sustitúyalo por el siguiente código: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)
           {
    
           }
       }
    }
    

    Estos dos métodos de marcador de posición se expandirán más adelante.We'll expand these two placeholder methods later.

  10. Haga clic con el botón derecho en el proyecto DateInserter y seleccione Agregar > Nuevo archivo.Right-click on the DateInserter Project and select Add > New File. Seleccione General > Enumeración vacía y luego asigne al nuevo archivo el nombre DateInserterCommands:Select General > Empty Enumeration, and then name the new file DateInserterCommands:

    DateInserterCommands

  11. Agregue el comando InsertDate como una nueva enumeración al archivo DateInserterCommands.cs:Add the InsertDate Command as a new enumeration in the DateInserterCommands.cs file:

    using System;
    
    namespace DateInserter
    {
      public enum DateInserterCommands
      {
          InsertDate,
      }
    }
    
  12. En este punto, debe tener un paquete de extensión que funciona.At this point, you should have a working extension package. Puede probarlo si guarda el trabajo y ejecuta la aplicación.You can test it out by saving your work and running the application. El IDE iniciará una nueva instancia de Visual Studio para Mac con el nuevo paquete de extensión instalado.The IDE will launch a new instance of Visual Studio for Mac with the new extension package installed. Si va al menú de edición, verá que Visual Studio para Mac tiene una opción nueva denominada Insertar fecha, como se muestra en la captura de pantalla siguiente: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 Insertar fecha

    Tenga en cuenta que la selección de Insertar fecha en el menú no tiene ningún efecto porque la implementación actual solo tiene métodos de marcador de posición.Note that selecting Insert Date from the menu has no effect as the current implementation only has placeholder methods.

  13. El marco de trabajo está listo para el paquete de extensión, así que es hora de escribir el código que permite insertar la fecha.The framework is in place for the extension package, and it's time to write the code that powers inserting the date. En primer lugar, asegúrese de que el comando Insertar fecha solo esté habilitado cuando el usuario tenga un archivo de texto abierto al reemplazar el método Update de InsertDateHandler.cs por el código siguiente: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. Actualice el método Run del comando para insertar la fecha y la hora con el código siguiente: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 último, ejecute el paquete de extensión para probarlo.Finally, let's run our extension package to test it. En la nueva instancia de Visual Studio para Mac, seleccione Editar > Insertar fecha.In the new instance of Visual Studio for Mac, select Edit > Insert Date. La fecha y la hora actuales se insertan en el símbolo de intercalación, como se muestra en la captura de pantalla siguiente:The current date and time is inserted at our caret, as illustrated by the screenshot below:

    Captura de pantalla de Insertar fecha