Porady: udostępnianie dodatku w menu Narzędzia (Visual C#)
Dodatki Visual Studio zostały zaniechane w programie Visual Studio 2013.Dodatki należy uaktualniać do pakietu rozszerzenia VSPackage.Aby uzyskać więcej informacji na temat uaktualniania, zobacz Często zadawane pytania: konwertowanie dodatków na rozszerzenia pakietu VSPackage.
Gdy tworzysz dodatek za pomocą Kreatora dodatków i wybierasz opcję wyświetlania go jako polecenie, polecenie znajduje się w menu domyślnym Narzędzia.Jednakże, jeśli pominiesz tę opcję podczas tworzenia dodatku, można po prostu uruchomić ponownie Kreator dodatku, zaznaczyć tę opcję, a następnie skopiować istniejący kod do nowego dodatku.
Chociaż wykonanie tego nie jest możliwe, poniższa procedura daje ten sam wynik.
[!UWAGA]
Polecenia menu i okien dialogowych mogą różnić się od tych opisanych w Pomocy, w zależności od ustawień aktywnych lub wydania.Procedury te zostały opracowane z ogólnych ustawień projektowych active.Aby zmienić swoje ustawienia, wybierz Importuj i eksportujustawienia w menu Narzędzia.Aby uzyskać więcej informacji, zobacz Dostosowywanie ustawień środowiska deweloperskiego w Visual Studio.
Aby dodać polecenie menu do istniejącego dodatku programu
Dodaj je za pomocą instrukcji do pliku zawierającego klasy Connect.
using Microsoft.VisualStudio.CommandBars; using System.Resources; using System.Reflection; using System.Globalization; using System.Windows.Forms;
Zmień deklarację klasy Connect do wdrożenia IDTCommandTarget.
Zastąp lub zmień OnConnection() kodeksu postępowania na następujący:
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) { } } }
Dodaj następujące dwie wymagane procedury do QueryStatus i 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; } } }
Każdorazowo, gdy implementujesz IDTCommandTarget, należy dodać te dwie procedury.Szybkim sposobem wykonania jest wybór IDTCommandTarget w polu rozwijanym Nazwa klasy w lewym górnym rogu edytora.Wybierz każdą procedurę z listy rozwijanej Nazwa metody w prawym górnym rogu.Spowoduje to utworzenie niezbędnych pustych procedur z poprawnych parametrów, do których można następnie dodać kod.
Exec procedura jest wywoływana, gdy użytkownik kliknie polecenie menu, więc wstawi kod tam, gdzie chcesz go wykonać w tym momencie.
Zobacz też
Zadania
Porady: udostępnianie dodatku w menu Narzędzia (Visual Basic)
Porady: kontrolowanie dodatków za pomocą menedżera dodatków