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 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 Extensibilidad de elementos>de C# 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 de la instancia experimental. Debería ver invocar el comando FirstCommand . En este punto, el comando abre un cuadro de mensaje que indica FirstCommand Inside FirstMenuCommand.FirstCommand.MenuItemCallback(). Veremos cómo iniciar realmente 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 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 Start Bloc de notas, 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 Execute método y agregue un StartNotepad método, que simplemente comenzará 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>invocar FirstCommand, debería ver que aparece una instancia de Bloc de notas.

    Puede usar una instancia de la Process clase para ejecutar cualquier archivo ejecutable, no solo 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 Studio y 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. 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 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 FirstMenuCommand . En concreto, suponiendo que haya creado la configuración de versión, estará en:

<code directory>\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<version>\Extensions .

Cuando tu amigo vuelva a abrir Visual Studio, encontrará la extensión FirstMenuCommand en Extensiones de herramientas>y Novedades. También pueden ir a Extensiones y Novedades 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 elementos de menú

  2. Agregar diferentes tipos de comandos, menús y barras de herramientas: extender 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 los servicios de editor y lenguaje.

  5. Agregar opciones y páginas de propiedades y configuración de usuario a la extensión: ampliar las 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 (extender proyectos), crear un nuevo tipo de editor (Crear diseñadores y editores personalizados) o implementar la extensión en un shell aislado: Shell aislado de Visual Studio