Porady: udostępnianie dodatku w menu Narzędzia (Visual Basic)
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 efekt.
[!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
W klasie dodatków Connect dodaj Implements IDTCommandTarget.
Daje to użytkownikowi dostęp do IDTCommandTarget interfejsu poleceń, co jest niezbędne do tworzenia poleceń.
W procedurze OnConnection dodaj następujący wpis:
Imports System Imports Microsoft.VisualStudio.CommandBars Imports Extensibility Imports EnvDTE Imports EnvDTE80 _applicationObject = CType(application, DTE2) _addInInstance = CType(addInInst, AddIn) If connectMode = ext_ConnectMode.ext_cm_Startup Then Dim commands As Commands2 = CType(_applicationObject.Commands, _ Commands2) Dim toolsMenuName As String Try Dim resourceManager As System.Resources.ResourceManager = _ New System.Resources.ResourceManager _ ("MyAddin1.CommandBar", System.Reflection.Assembly. _ GetExecutingAssembly()) Dim cultureInfo As System.Globalization.CultureInfo = New _ System.Globalization.CultureInfo(_applicationObject. _ LocaleID) toolsMenuName = resourceManager.GetString(String.Concat _ (cultureInfo.TwoLetterISOLanguageName, "Tools")) Catch e As Exception toolsMenuName = "Tools" End Try Dim commandBars As CommandBars = _ CType(_applicationObject.CommandBars, CommandBars) Dim menuBarCommandBar As CommandBar = _ commandBars.Item("MenuBar") Dim toolsControl As CommandBarControl = _ menuBarCommandBar.Controls.Item(toolsMenuName) Dim toolsPopup As CommandBarPopup = CType(toolsControl, _ CommandBarPopup) Try Dim command As Command = _ commands.AddNamedCommand2(_addInInstance, "MyAddin1", _ "MyAddin1", "Executes the command for MyAddin1", True, _ 59, Nothing, CType(vsCommandStatus. _ vsCommandStatusSupported, Integer) + _ CType(vsCommandStatus.vsCommandStatusEnabled, _ Integer), vsCommandStyle.vsCommandStylePictAndText, _ vsCommandControlType.vsCommandControlTypeButton) command.AddControl(toolsPopup.CommandBar, 1) Catch argumentException As System.ArgumentException End Try End If
Ten kod wykonuje, gdy dodatek jest załadowany ("związane") w Visual Studio.Określa, czy ten dodatek został załadowany z wartością ext_ConnectMode z ext_cm_UISetup.Oznacza to, że dodatek został uruchomiony po raz pierwszy od zainstalowania.Jeśli to prawda, wówczas polecenie jest tworzone dla niego w menu Narzędzia za pomocą metody AddNamedCommand.Aby uzyskać więcej informacji, zobacz Porady: dodawanie i obsługa poleceń.
Dodaj następujące dwie procedury do klasy Connect.
Metoda QueryStatus jest wywoływana podczas wywoływania gdy polecenie jest dostępne.Metoda Exec jest wywoływana podczas wywoływania polecenia.
Public Sub QueryStatus(ByVal commandName As String, _ ByVal neededText As vsCommandStatusTextWanted, ByRef status As _ vsCommandStatus, ByRef commandText As Object) Implements _ IDTCommandTarget.QueryStatus If neededText = vsCommandStatusTextWanted. _ vsCommandStatusTextWantedNone Then If commandName = "MyAddin1.Connect.MyAddin1" Then status = CType(vsCommandStatus.vsCommandStatusEnabled _ + vsCommandStatus.vsCommandStatusSupported, _ vsCommandStatus) Else status = vsCommandStatus.vsCommandStatusUnsupported End If End If End Sub Public Sub Exec(ByVal commandName As String, ByVal executeOption _ As vsCommandExecOption, ByRef varIn As Object, ByRef varOut As _ Object, ByRef handled As Boolean) Implements IDTCommandTarget.Exec handled = False If executeOption = vsCommandExecOption. _ vsCommandExecOptionDoDefault Then If commandName = "MyAddin1.Connect.MyAddin1" Then handled = True Exit Sub End If End If End Sub
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 C#)
Porady: kontrolowanie dodatków za pomocą menedżera dodatków