Como expor um suplemento no menu Ferramentas (Visual C#)
Os suplementos do Visual Studio foram substituídos no Visual Studio 2013. Você deve atualizar seus suplementos para as extensões VSPackage. Para obter mais informações sobre atualização, consulte Perguntas frequentes: convertendo suplementos em extensões VSPackage.
Quando você cria um suplemento usando o Assistente de Suplemento e seleciona a opção de exibi-lo como um comando, o comando está no menu Ferramentas por padrão. No entanto, se você ignorar esta opção ao criar o suplemento, você poderá simplesmente executar o Assistente de Suplemento novamente, verificar a opção e, em seguida, copiar seu código existente para o novo suplemento.
Se não for possível fazer isso, o procedimento a seguir produzirá o mesmo resultado.
Dica
As caixas de diálogo e os comandos de menu que você vê podem diferir das descritas no Help dependendo de suas configurações ativas ou de edição.Esses procedimentos foram desenvolvidos com as Configurações Gerais de Desenvolvimento ativas.Para alterar as configurações, escolha Importar e ExportarConfigurações no menu de Ferramentas.Para obter mais informações, consulte Personalizando configurações de desenvolvimento no Visual Studio.
Para adicionar um comando de menu a um suplemento existente
Adicione essas instruções de uso ao arquivo que contém a classe de Connect.
using Microsoft.VisualStudio.CommandBars; using System.Resources; using System.Reflection; using System.Globalization; using System.Windows.Forms;
Altere a declaração de classe Connect para implementar o IDTCommandTarget.
Substitua ou altere o código do procedimento OnConnection() para o seguinte:
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) { } } }
Adicione os próximos dois procedimentos exigidos, o QueryStatus e o 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 você implementa IDTCommandTarget, você deve adicionar esses dois procedimentos. Uma maneira rápida de fazer é selecionar IDTCommandTarget na caixa suspensa Nome de Classe, no canto superior esquerdo do editor. Selecione um procedimento por vez na caixa suspensa Nome do Método no canto superior direito. Isso cria os procedimentos vazios necessários com os parâmetros corretos aos quais é possível adicionar código.
O procedimento Exec é chamado quando um usuário clica em seu comando de menu para inserir o código que deseja que seja executado naquele momento.
Consulte também
Tarefas
Como expor um suplemento no menu Ferramentas (Visual Basic)
Como controlar suplementos usando o Gerenciador de Suplementos