Cómo: Mostrar un complemento en el menú Herramientas (Visual C#)
Los complementos de Visual Studio están desusados en Visual Studio 2013. Debe actualizar los complementos a las extensiones de VSPackage. Para obtener más información sobre la actualización, vea Preguntas más frecuentes: Convertir complementos en extensiones de VSPackage.
Cuando se crea un complemento mediante el Asistente para complementos y se selecciona la opción de mostrarlo como comando, este comando se encuentra, de forma predeterminada, en el menú Herramientas. Sin embargo, si omite esta opción al crear el complemento, simplemente ejecute de nuevo el Asistente para complementos, active esa opción y luego copie el código existente en el nuevo complemento.
No obstante, si no es posible, el procedimiento siguiente genera el mismo resultado.
Nota
Los cuadros de diálogo y comandos de menú que se ven pueden diferir de los descritos en la Ayuda, en función de los valores de configuración o de edición activos.Estos procedimientos se han desarrollado con la Configuración de desarrollo general activa.Para cambiar la configuración, elija la opción Importar y exportarconfiguraciones del menú Herramientas.Para obtener más información, vea Personalizar la configuración de desarrollo en Visual Studio.
Para agregar un comando de menú a un complemento existente
Agregue estas instrucciones using al archivo que contiene la clase Connect.
using Microsoft.VisualStudio.CommandBars; using System.Resources; using System.Reflection; using System.Globalization; using System.Windows.Forms;
Cambie la declaración de la clase Connect para implementar IDTCommandTarget.
Reemplace o cambie el código del procedimiento OnConnection() por lo siguiente:
public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) { _applicationObject = (DTE2)application; _addInInstance = (AddIn)addInInst; if(connectMode == ext_ConnectMode.ext_cm_UISetup) { object []contextGUIDS = new object[] { }; Commands2 commands = (Commands2)_applicationObject.Commands; string toolsMenuName; try { ResourceManager resourceManager = new ResourceManager("MyAddin1.CommandBar", Assembly.GetExecutingAssembly()); CultureInfo cultureInfo = new System.Globalization.CultureInfo (_applicationObject.LocaleID); string resourceName = String.Concat(cultureInfo. TwoLetterISOLanguageName, "Tools"); toolsMenuName = resourceManager.GetString(resourceName); } catch { toolsMenuName = "Tools"; } CommandBar menuBarCommandBar = ((CommandBars)_applicationObject.CommandBars) ["MenuBar"]; CommandBarControl toolsControl = menuBarCommandBar.Controls[toolsMenuName]; CommandBarPopup toolsPopup = (CommandBarPopup)toolsControl; try { Command command = commands.AddNamedCommand2 (_addInInstance, "MyAddin1", "MyAddin1", "Executes the command for MyAddin1", true, 59, ref contextGUIDS, (int)vsCommandStatus. vsCommandStatusSupported+(int)vsCommandStatus. vsCommandStatusEnabled, (int)vsCommandStyle. vsCommandStylePictAndText, vsCommandControlType. vsCommandControlTypeButton); if((command != null) && (toolsPopup != null)) { command.AddControl(toolsPopup.CommandBar, 1); } } catch(System.ArgumentException) { } } }
Agregue los dos procedimientos necesarios siguientes, QueryStatus y Exec:
public void QueryStatus(string commandName, vsCommandStatusTextWanted neededText, ref vsCommandStatus status, ref object commandText) { if(neededText == vsCommandStatusTextWanted.vsCommandStatusTextWantedNone) { if(commandName == "MyAddin1.Connect.MyAddin1") { status = (vsCommandStatus)vsCommandStatus. vsCommandStatusSupported|vsCommandStatus. vsCommandStatusEnabled; return; } } } public void Exec(string commandName, vsCommandExecOption executeOption, ref object varIn, ref object varOut, ref bool handled) { handled = false; if(executeOption == vsCommandExecOption.vsCommandExecOptionDoDefault) { if(commandName == "MyAddin1.Connect.MyAddin1") { handled = true; System.Windows.Forms.MessageBox. Show("add-in running."); return; } } }
Cada vez que implemente IDTCommandTarget, debe agregar estos dos procedimientos. Una forma rápida de hacerlo es seleccionar IDTCommandTarget en el cuadro de lista desplegable Nombre de clase en la esquina superior izquierda del editor. Seleccione, a su vez, cada procedimiento del cuadro de lista desplegable Nombre del método en la esquina superior derecha. De esta forma, se crean los procedimientos vacíos necesarios con los parámetros correctos a los que puede agregar código.
Cuando un usuario hace clic en el comando de menú, se llama al procedimiento Exec; por lo tanto, inserte aquí el código que desee ejecutar en ese momento.
Vea también
Tareas
Cómo: Mostrar un complemento en el menú Herramientas (Visual Basic)
Cómo: Controlar complementos con el Administrador de complementos