Compartir a través de


Crear una extensión con un comando de menú

En este tutorial se explica cómo crear una extensión con un comando de menú que abre el Bloc de notas.

Crear un comando de menú

  1. Cree un proyecto VSIX denominado FirstMenuCommand. Puede encontrar la plantilla de proyecto VSIX en el cuadro de diálogo Nuevo proyecto; para ello, busque "vsix".

  2. Cuando se abra el proyecto, agregue una plantilla del elemento de comando personalizado denominada FirstCommand. En el Explorador de soluciones, haga clic con el botón derecho en el nodo del proyecto y seleccione Agregar>Nuevo elemento. En el cuadro de diálogo Agregar nuevo elemento, vaya a Elementos de C#>Extensibilidad y seleccione Comando. En el campo Nombre de la parte inferior de la ventana, cambie el nombre del archivo de comando por FirstCommand.cs.

  3. Compile la solución y comience la depuración.

    Se abrirá la instancia experimental de Visual Studio. Para obtener más información sobre la instancia experimental, consulte La instancia experimental.

  4. En la instancia experimental, abra la ventana Extensiones>Administrar extensiones. Tras esto, aquí debería ver la extensión FirstMenuCommand. (Si abre Administrar extensiones en la instancia de trabajo de Visual Studio, no verá FirstMenuCommand).

Ahora vaya al menú Herramientas de la instancia experimental. Le debería aparecer el comando Invoke FirstCommand . Llegados hasta aquí, el comando abrirá un cuadro de mensaje con lo siguiente: FirstCommand Inside FirstMenuCommand.FirstCommand.MenuItemCallback(). Veremos cómo abrir el Bloc de notas a través de este comando en la sección siguiente.

Cambiar el controlador de comandos de menú

Ahora vamos a actualizar el controlador de comandos para abrir el Bloc de notas.

  1. Detenga la depuración y vuelva a la instancia de trabajo de Visual Studio. Abra el archivo FirstCommand.cs y agregue lo siguiente mediante la instrucción:

    using System.Diagnostics;
    
  2. Busque el constructor FirstCommand privado. Aquí es donde se vincula el comando al servicio de comandos y se indica el controlador del comando. Cambie el nombre del controlador del comando por StartNotepad, tal como se indica a continuación:

    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. Elimine el método Execute y agregue un método StartNotepad que iniciará el Bloc de notas:

    private void StartNotepad(object sender, EventArgs e)
    {
        ThreadHelper.ThrowIfNotOnUIThread();
    
        Process proc = new Process();
        proc.StartInfo.FileName = "notepad.exe";
        proc.Start();
    }
    
  4. Pruébelo ahora. Al iniciar la depuración del proyecto y hacer clic en Herramientas>Invoke FirstCommand, debería salir una instancia del Bloc de notas.

    Puede usar una instancia de la clase Process para ejecutar cualquier archivo ejecutable, no solo el Bloc de notas. Pruébelo con calc.exe, por ejemplo.

Limpieza del entorno experimental

Si va a desarrollar varias extensiones o está mirando variantes con distintas versiones del código de extensión, el entorno experimental puede dejar de funcionar como debiera. En este caso, debe ejecutar el script de restablecimiento. Se denomina Restablecer la instancia experimental de Visual Studio y se distribuye dentro del SDK de Visual Studio. Este script elimina todas las referencias en las extensiones del entorno experimental y así es posible empezar desde cero.

Puede conseguir este script de una de estas dos formas:

  1. En el escritorio, busque Restablecer la instancia experimental de Visual Studio.

  2. Ejecute lo siguiente desde la línea de comandos:

    <VSSDK installation>\VisualStudioIntegration\Tools\Bin\CreateExpInstance.exe /Reset /VSInstance=<version> /RootSuffix=Exp && PAUSE
    
    

Implementación de la extensión

Ahora que tiene la extensión de la herramienta ejecutándose de la manera que desea, es el momento de pensar en compartirla con amigos y compañeros. Esto es fácil, siempre que estos tengan Instalado Visual Studio 2015. Todo lo que tiene que hacer es enviarles el archivo .vsix que ha compilado. (Asegúrese de compilarlo en modo de versión).

Puede encontrar el archivo .vsix de esta extensión en el directorio bin FirstMenuCommand. En concreto, suponiendo que ha creado la configuración de la versión final, estará en:

<directorio del código>\FirstMenuCommand\FirstMenuCommand\bin\Release\FirstMenuCommand.vsix

Para instalar la extensión, el usuario que la reciba debe cerrar todas las instancias abiertas de Visual Studio y luego hacer doble clic en el archivo .vsix, con el que se abre el instalador de VSIX. Los archivos se copian en el directorio %LocalAppData%\Microsoft\VisualStudio<version>\Extensions.

Cuando el usuario vuelva a abrir Visual Studio, encontrará la extensión FirstMenuCommand en Herramientas>Extensiones y actualizaciones. También pueden acceder a Extensiones y actualizaciones para desinstalar o deshabilitar la extensión.

Pasos siguientes

En este tutorial solo se explica un poco lo que puede hacer con una extensión de Visual Studio. Consulte esta breve lista de otras cosas (razonablemente fáciles) que puede hacer con las extensiones de Visual Studio:

  1. Puede hacer muchas más cosas con un simple comando de menú:

    1. Agregar su propio icono: Agregar iconos a comandos de menú

    2. Cambiar el texto del comando de menú: Cambiar el texto de un comando de menú

    3. Agregar un acceso directo de menú a un comando: Crear métodos abreviados de teclado a elementos de menú

  2. Agregar diferentes tipos de comandos, menús y barras de herramientas: Ampliar menús y comandos

  3. Agregar ventanas de herramientas y ampliar las ventanas de herramientas integradas de Visual Studio: Ampliar y personalizar ventanas de herramientas

  4. Agregar IntelliSense, sugerencias de código y otras características a los editores de código existentes: Ampliación del editor y los servicios de lenguaje

  5. Agregar opciones y páginas de propiedades y ajustes de usuario a la extensión: Ampliar propiedades y la ventana de propiedades y Ampliar configuración y opciones del usuario

    Para otros tipos de extensiones se deben hacer más cosas, como crear un nuevo tipo de proyecto (Ampliación de proyectos) o crear un nuevo tipo de editor (Crear editores y diseñadores personalizados).