Compartir vía


Creación de una extensión con un comando de menú

En este tutorial se muestra cómo crear una extensión con un comando de menú que inicia 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 buscando "vsix".

  2. Cuando se abra el proyecto, agregue una plantilla de elemento de comando personalizada 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 a FirstCommand.cs.

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

    Aparece la instancia experimental de Visual Studio. Para obtener más información sobre la instancia experimental, vea La instancia experimental.

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

Ahora vaya al menú Herramientas en la instancia experimental. Debería ver el comando Invoke FirstCommand. En este punto, el comando abre un cuadro de mensaje que indica FirstCommand Inside FirstMenuCommand.FirstCommand.MenuItemCallback(). Veremos cómo iniciar realmente el Bloc de notas desde este comando en la sección siguiente.

Cambiar el controlador de comandos de menú

Ahora vamos a actualizar el controlador de comandos para iniciar 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 la siguiente instrucción using:

    using System.Diagnostics;
    
  2. Busque el constructor FirstCommand privado. Aquí es donde se enlaza el comando al servicio de comandos y se especifica el controlador de comandos. Cambie el nombre del controlador de comandos a StartNotepad, 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. Quite el método Execute y agregue un método StartNotepad, que simplemente 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. Ahora pruébelo. Al iniciar la depuración del proyecto y hacer clic en Herramientas>Invoke FirstCommand, debería ver que aparece 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 está desarrollando varias extensiones o simplemente explorando resultados con distintas versiones del código de extensión, el entorno experimental puede dejar de funcionar como debería. En este caso, debe ejecutar el script de restablecimiento. Se denomina Restablecer la instancia experimental de Visual Studioy se distribuye como parte del SDK de Visual Studio. Este script quita todas las referencias a las extensiones del entorno experimental, por lo que puede empezar desde cero.

Puede acceder a este script de una de estas dos maneras:

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

  2. En la línea de comandos, ejecute lo siguiente:

    <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 herramienta en ejecución de la manera que desea, es el momento de pensar en compartirla con sus amigos y compañeros. Esto es fácil, siempre que tengan Instalado Visual Studio 2015. Todo lo que tiene que hacer es enviarlos el archivo .vsix que ha compilado. (Asegúrese de compilarlo en modo de versión).

Puede encontrar el archivo .vsix para esta extensión en el directorio bin de FirstMenuCommand. Específicamente, suponiendo que haya creado la configuración de versión, estará en:

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

Para instalar la extensión, su amigo debe cerrar todas las instancias abiertas de Visual Studio y, a continuación, hacer doble clic en el archivo .vsix, que abre el Instalador VSIX. Los archivos se copian en el directorio %LocalAppData%\Microsoft\VisualStudio<versión>\Extensions.

Cuando tu amigo vuelva a abrir Visual Studio, encontrará la extensión FirstMenuCommand en Tools>Extensions and Updates. También pueden ir a Extensiones y actualizaciones para desinstalar o deshabilitar la extensión.

Pasos siguientes

En este tutorial solo se muestra una pequeña parte de lo que puede hacer con una extensión de Visual Studio. Esta es una 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 comando de menú simple:

    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: Enlazar métodos abreviados de teclado a los 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. Agregue IntelliSense, sugerencias de código y otras características a los editores de código existentes: Ampliar el editor y los servicios de lenguaje

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

    Otros tipos de extensiones requieren un poco más de trabajo, como crear un nuevo tipo de proyecto (Ampliar proyectos) o crear un nuevo tipo de editor (Crear editores y diseñadores personalizados).