Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieses Dokument zeigt, wie Sie eine VSCT-Datei erstellen, um der integrierten Entwicklungsumgebung (IDE) von Visual Studio Menüelemente, Symbolleisten und andere Benutzeroberflächenelemente hinzuzufügen. Führen Sie diese Schritte aus, wenn Sie einem Visual Studio-Paket (VSPackage) UI-Elemente hinzufügen, das noch nicht über eine VSCT-Datei verfügt.
Für neue Projekte wird empfohlen, die Visual Studio-Paketvorlage zu verwenden, da sie eine VSCT-Datei generiert, die je nach Auswahl bereits über die erforderlichen Elemente für einen Menübefehl, ein Toolfenster oder einen benutzerdefinierten Editor verfügt. Sie können diese VSCT-Datei ändern, um die Anforderungen Ihres VSPackage zu erfüllen. Weitere Informationen zum Ändern einer VSCT-Datei finden Sie in den Beispielen unter Erweitern von Menüs und Befehlen.
Erstellen der Datei
Erstellen Sie eine VSCT-Datei in diesen Phasen: Erstellen Sie die Struktur für Dateien und Ressourcen, deklarieren Sie die UI-Elemente, fügen Sie die UI-Elemente in die IDE ein, und fügen Sie spezielle Verhaltensweisen hinzu.
Dateistruktur
Die grundlegende Struktur einer VSCT-Datei ist ein CommandTable-Stammelement , das ein Commands-Element und ein Symbols-Element enthält.
So erstellen Sie die Dateistruktur
Fügen Sie Ihrem Projekt eine .vsct-Datei hinzu, indem Sie die Schritte unter Vorgehensweise: Erstellen einer .vsct-Datei befolgen.
Fügen Sie dem
CommandTableElement die erforderlichen Namespaces hinzu, wie im folgenden Beispiel gezeigt:<CommandTable xmlns="http://schemas.microsoft.com/VisualStudio/2005-10-18/CommandTable" xmlns:xs="http://www.w3.org/2001/XMLSchema">Fügen Sie im
CommandTableElement einCommandsElement hinzu, um alle benutzerdefinierten Menüs, Symbolleisten, Befehlsgruppen und Befehle zu hosten. Damit Ihre benutzerdefinierten UI-Elemente geladen werden können, muss dasCommandsElement seinPackageAttribut auf den Namen des Pakets festgelegt haben.Fügen Sie nach dem
CommandsElement einSymbolsElement hinzu, um die GUIDs für das Paket sowie die Namen und Befehls-IDs für Ihre UI-Elemente zu definieren.
Einschließen von Visual Studio-Ressourcen
Verwenden Sie das Extern-Element , um auf die Dateien zuzugreifen, die Visual Studio-Befehle und die Menüs definieren, die zum Platzieren der UI-Elemente in der IDE erforderlich sind. Wenn Sie Außerhalb des Pakets definierte Befehle verwenden, verwenden Sie das UsedCommands-Element , um Visual Studio zu informieren.
So fügen Sie Visual Studio-Ressourcen ein
Fügen Sie oben im
CommandTableElement einExternElement für jede externe Datei hinzu, auf die verwiesen werden soll, und legen Sie dashrefAttribut auf den Namen der Datei fest. Sie können auf die folgenden Headerdateien verweisen, um auf Visual Studio-Ressourcen zuzugreifen:Stdidcmd.h: Definiert IDs für alle Befehle, die von Visual Studio verfügbar gemacht werden.
Vsshlids.h: Enthält Befehls-IDs für Visual Studio-Menüs.
Wenn Ihr Paket Befehle aufruft, die von Visual Studio oder anderen Paketen definiert werden, fügen Sie nach dem
UsedCommandsElement einCommandsElement hinzu. Füllen Sie dieses Element mit einem UsedCommand-Element für jeden Befehl auf, den Sie aufrufen, der nicht Teil des Pakets ist. Setzen Sie dieguid- undid-Attribute derUsedCommand-Elemente auf die GUID- und ID-Werte der Befehle, die aufgerufen werden sollen.Weitere Informationen zum Auffinden der GUIDs und IDs von Visual Studio-Befehlen finden Sie unter GUIDs und IDs von Visual Studio-Befehlen. Verwenden Sie zum Aufrufen von Befehlen aus anderen Paketen die GUID und die ID des Befehls, wie in der VSCT-Datei für diese Pakete definiert.
Deklarieren von UI-Elementen
Deklarieren Sie alle neuen UI-Elemente im Symbols Abschnitt der VSCT-Datei .
So deklarieren Sie UI-Elemente
Fügen Sie im
SymbolsElement drei GuidSymbol-Elemente hinzu. JedesGuidSymbolElement verfügt über einnameAttribut und einvalueAttribut. Legen Sie dasnameAttribut so fest, dass es den Zweck des Elements widerspiegelt. DasvalueAttribut akzeptiert eine GUID. (Um eine GUID zu generieren, wählen Sie im Menü "Extras " die Option "GUID erstellen" und dann "Registrierungsformat" aus.)Das erste
GuidSymbolElement stellt Ihr Paket dar und hat in der Regel keine untergeordneten Elemente. Das zweiteGuidSymbolElement stellt den Befehlssatz dar und enthält alle Symbole, die Menüs, Gruppen und Befehle definieren. Das dritteGuidSymbolElement stellt Ihren Bildspeicher dar und enthält Symbole für alle Symbole für Ihre Befehle. Wenn Sie keine Befehle haben, die Symbole verwenden, können Sie das dritteGuidSymbolElement weglassen.Fügen Sie im
GuidSymbolElement, das Ihren Befehlssatz darstellt, ein oder mehrere IDSymbol-Elemente hinzu. Jede dieser Elemente stellt ein Menü, eine Symbolleiste, eine Gruppe oder einen Befehl dar, den Sie der Benutzeroberfläche hinzufügen.Legen Sie für jedes
IDSymbolElement dasnameAttribut auf den Namen fest, den Sie verwenden, um auf das entsprechende Menü, die Entsprechende Gruppe oder den entsprechenden Befehl zu verweisen, und legen Sie dasvalueElement dann auf eine hexadezimale Zahl fest, die die Befehls-ID darstellt. Keine zweiIDSymbolElemente mit demselben übergeordneten Element können denselben Wert aufweisen.Wenn eines Ihrer UI-Elemente Symbole benötigt, fügen Sie für jedes Symbol ein
IDSymbol-Element zu demGuidSymbol-Element hinzu, das Ihren Imagespeicher repräsentiert.
Platzieren von UI-Elementen in der IDE
Die Elemente "Menüs", "Gruppen" und "Schaltflächen" enthalten die Definitionen für alle Menüs, Gruppen und Befehle, die in Ihrem Paket definiert sind. Platzieren Sie diese Menüs, Gruppen und Befehle entweder mithilfe eines übergeordneten Elements, das Teil der UI-Elementdefinition ist, oder mithilfe eines CommandPlacement-Elements , das an anderer Stelle definiert ist.
Jedes Menu, Group und jedes Button-Element verfügt über ein guid-Attribut und ein id-Attribut. Legen Sie das guid Attribut immer so fest, dass es dem Namen des GuidSymbol Elements entspricht, das Ihren Befehlssatz darstellt, und legen Sie das id Attribut auf den Namen des IDSymbol Elements fest, das Das Menü, die Gruppe oder den Befehl im Symbols Abschnitt darstellt.
So definieren Sie UI-Elemente
Wenn Sie neue Menüs, Untermenüs, Kontextmenüs oder Symbolleisten definieren, fügen Sie dem
MenusElement einCommandsElement hinzu. Fügen Sie dann für jedes zu erstellende Menü dem Element einMenushinzu.Legen Sie die
guidundidAttribute desMenuElements fest, und legen Sie dann dastypeAttribut auf die gewünschte Art von Menü fest. Sie können daspriorityAttribut auch so festlegen, dass die relative Position des Menüs in der übergeordneten Gruppe festgelegt wird.Hinweis
Das
priorityAttribut gilt nicht für Symbolleisten und Kontextmenüs.Alle Befehle in der Visual Studio-IDE müssen von Befehlsgruppen gehostet werden, die direkte Unterelemente von Menüs und Symbolleisten sind. Wenn Sie der IDE neue Menüs oder Symbolleisten hinzufügen, müssen diese neue Befehlsgruppen enthalten. Sie können auch Befehlsgruppen zu vorhandenen Menüs und Symbolleisten hinzufügen, damit Sie Ihre Befehle visuell gruppieren können.
Wenn Sie neue Befehlsgruppen hinzufügen, müssen Sie zuerst ein
GroupsElement erstellen und dann ein Gruppenelement für jede Befehlsgruppe hinzufügen.Legen Sie die
guidAttribute der einzelnenidElemente fest, und legen Sie dann dasGroupAttribut fest, um die relative Position der Gruppe im übergeordnetenpriorityMenü festzulegen. Weitere Informationen finden Sie unter Erstellen wiederverwendbarer Schaltflächengruppen.Wenn Sie der IDE neue Befehle hinzufügen, fügen Sie dem
ButtonsElement einCommandsElement hinzu. Fügen Sie dann für jeden Befehl dem Element einButtonshinzu.Legen Sie die
guidAttribute der einzelnenidElemente fest, und legen Sie dann dasButtonAttribut auf die gewünschte Schaltflächenarttypefest. Sie können auch daspriorityAttribut festlegen, um die relative Position des Befehls in der übergeordneten Gruppe festzulegen.Hinweis
Verwenden Sie
type="button"für Standardmenübefehle und Schaltflächen in Symbolleisten.Fügen Sie im
ButtonElement ein Strings-Element hinzu, das ein ButtonText-Element und ein CommandName-Element enthält. DasButtonTextElement stellt die Textbezeichnung für ein Menüelement oder den Tooltip für eine Symbolleistenschaltfläche bereit. DasCommandNameElement stellt den Namen des Befehls bereit, der in der Befehlsquelle verwendet werden soll.Wenn Ihr Befehl ein Symbol haben wird, erstellen Sie ein Symbol-Element im
Button-Element, und legen Sie dessenguid- undid-Attribute auf dasBitmap-Element für das Symbol fest.Hinweis
Symbolleistenschaltflächen müssen Symbole enthalten.
Weitere Informationen finden Sie unter MenuCommands vs. OleMenuCommands.
Wenn für einen ihrer Befehle Symbole erforderlich sind, fügen Sie dem Element ein
Commandshinzu. Fügen Sie dann für jedes Symbol dem Element einBitmapshinzu. Hier geben Sie den Speicherort der Bitmapressource an. Weitere Informationen finden Sie unter Hinzufügen von Symbolen zu Menübefehlen.Sie können sich auf die übergeordnete Struktur verlassen, um die meisten Menüs, Gruppen und Befehle korrekt zu platzieren. Für sehr große Befehlssätze oder wenn ein Menü, eine Gruppe oder ein Befehl an mehreren Stellen angezeigt werden muss, wird empfohlen, die Befehlsplatzierung anzugeben.
So verlassen Sie sich auf das Übergeordnete, um UI-Elemente in der IDE zu platzieren
Erstellen Sie für ein typisches Parent-Element ein
Parent-Element in jedemMenu-,Group- undCommand-Element, das in Ihrem Paket definiert ist.Das Ziel des
ParentElements ist das Menü oder die Gruppe, das das Menü, die Gruppe oder den Befehl enthält.Legen Sie das
guidAttribut auf den Namen desGuidSymbolElements fest, das den Befehlssatz definiert. Wenn das Zielelement nicht Teil des Pakets ist, verwenden Sie die GUID für diesen Befehlssatz, wie in der entsprechenden VSCT-Datei definiert.Legen Sie das
idAttribut so fest, dass es demidAttribut des Zielmenüs oder der Gruppe entspricht. Eine Auflistung der Menüs und Gruppen, die von Visual Studio verfügbar gemacht werden, finden Sie unter GUIDs und IDs von Visual Studio-Menüs oder GUIDs und IDs von Visual Studio-Symbolleisten.
Wenn Sie über eine große Anzahl von UI-Elementen verfügen, die in der IDE platziert werden sollen, oder wenn Elemente vorhanden sind, die an mehreren Stellen angezeigt werden sollen, definieren Sie ihre Platzierungen im CommandPlacements-Element , wie in den folgenden Schritten gezeigt.
So platzieren Sie UI-Elemente mithilfe der Befehlsplatzierung in der IDE
Fügen Sie nach dem
Commands-Element einCommandPlacements-Element hinzu.Fügen Sie im
CommandPlacementsElement einCommandPlacementElement für jedes Menü, jede Gruppe oder jeden Befehl hinzu, um es zu platzieren.Jedes
CommandPlacement-Element oderParent-Element platziert ein Menü, eine Gruppe oder einen Befehl an einem Speicherort in der IDE. Ein UI-Element kann nur über ein übergeordnetes Element verfügen, aber es können mehrere Befehlsplatzierungen vorhanden sein. Um ein UI-Element an mehreren Speicherorten zu platzieren, fügen Sie einCommandPlacementElement für jeden Speicherort hinzu.Legen Sie die
guidundidAttribute jedesCommandPlacementElements auf das Menü oder die Gruppe der Hostingumgebung fest, genau wie für einParentElement. Sie können daspriorityAttribut auch so festlegen, dass die relative Position des UI-Elements festgelegt wird.Sie können die Platzierung durch übergeordnete Objekte und Befehlsplatzierung kombinieren. Bei sehr großen Befehlssätzen wird jedoch empfohlen, nur die Befehlsplatzierung zu verwenden.
Hinzufügen spezieller Verhaltensweisen
Sie können das CommandFlag-Element verwenden, um das Verhalten von Menüs und Befehlen zu ändern, z. B. um deren Darstellung und Sichtbarkeit zu ändern. Sie können auch beeinflussen, wann ein Befehl mithilfe des VisibilityConstraints-Elements sichtbar ist, oder Tastenkombinationen mithilfe des KeyBindings-Elements hinzufügen. Bestimmte Arten von Menüs und Befehlen verfügen bereits über spezielle Verhaltensweisen.
So fügen Sie spezielle Verhaltensweisen hinzu
Um ein UI-Element nur in bestimmten UI-Kontexten sichtbar zu machen, z. B. wenn eine Lösung geladen wird, verwenden Sie Sichtbarkeitseinschränkungen.
Fügen Sie nach dem
Commands-Element einVisibilityConstraints-Element hinzu.Fügen Sie für jedes UI-Element, das eingeschränkt werden soll, ein VisibilityItem-Element hinzu.
Legen Sie für jedes
VisibilityItemElement dieguidAttribute undidAttribute auf das Menü, die Gruppe oder den Befehl fest, und legen Sie dann dascontextAttribut auf den gewünschten Ui-Kontext fest, wie in der UIContextGuids80 Klasse definiert.
Verwenden Sie eine oder mehrere der folgenden Befehlskennzeichnungen, um die Sichtbarkeit oder Verfügbarkeit eines UI-Elements im Code festzulegen:
DefaultDisabledDefaultInvisibleDynamicItemStartDynamicVisibilityNoShowOnMenuControllerNotInTBList
Weitere Informationen finden Sie im CommandFlag-Element .
Um die Darstellung eines Elements zu ändern oder seine Darstellung dynamisch zu ändern, verwenden Sie ein oder mehrere der folgenden Befehlskennzeichnungen:
AlwaysCreateCommandWellOnlyDefaultDockedDontCacheDynamicItemStartFixMenuControllerIconAndTextPictStretchHorizontallyTextMenuUseButtonTextChangesTextOnly
Weitere Informationen finden Sie im CommandFlag-Element .
Um zu ändern, wie ein Element reagiert, wenn es Befehle empfängt, verwenden Sie ein oder mehrere der folgenden Befehlskennzeichnungen:
AllowParamsCaseSensitiveCommandWellOnlyFilterKeysNoAutoCompleteNoButtonCustomizeNoKeyCustomizeNoToolbarClosePostExecRouteToDocsTextIsAnchorCommand
Weitere Informationen finden Sie im CommandFlag-Element .
Wenn Sie eine menüabhängige Tastenkombination an ein Menü oder ein Element in einem Menü anfügen möchten, fügen Sie im
ButtonText-Element für das Menü oder Menüelement ein kaufmännisches Und-Zeichen (&) hinzu. Das Zeichen, das dem kaufmännischen Und-Zeichen folgt, ist die aktive Tastenkombination, wenn das übergeordnete Menü geöffnet ist.Verwenden Sie das KeyBindings-Element , um eine menüunabhängige Tastenkombination an einen Befehl anzufügen. Weitere Informationen finden Sie im KeyBinding-Element .
Verwenden Sie das
LocCanonicalNameElement, um Menütext zu lokalisieren. Weitere Informationen finden Sie im Strings-Element .Einige Menü- und Schaltflächentypen umfassen spezielle Verhaltensweisen. In der folgenden Liste werden einige spezielle Menü- und Schaltflächentypen beschrieben. Weitere Typen finden Sie in den
typesAttributbeschreibungen im Menü-, Schaltflächen- und Kombinationselement .Kombinationsfeld: Ein Kombinationsfeld ist eine Dropdown-Liste, die auf einer Symbolleiste verwendet werden kann. Wenn Sie der Benutzeroberfläche Kombinationsfelder hinzufügen möchten, erstellen Sie ein Combos-Element im
CommandsElement. Fügen Sie dann demCombosElement einComboElement für jedes hinzuzufügende Kombinationsfeld hinzu.Combo-Elemente haben die gleichen Attribute und untergeordnete Elemente wieButton-Elemente und zusätzlich die AttributeDefaultWidthundidCommandList. DasDefaultWidthAttribut legt die Breite in Pixel fest, und dasidCommandListAttribut verweist auf eine Befehls-ID, die zum Auffüllen des Kombinationsfelds verwendet wird.Menücontroller: Ein Menücontroller ist eine Schaltfläche mit einem Pfeil daneben. Durch Klicken auf den Pfeil wird eine Liste geöffnet. Wenn Sie der Benutzeroberfläche einen Menücontroller hinzufügen möchten, erstellen Sie ein
MenuElement, und legen Sie dessentypeAttribut je nach gewünschtem Verhalten aufMenuControlleroderMenuControllerLatchedfest. Um einen Menücontroller aufzufüllen, legen Sie ihn als übergeordnetes Element einesGroupElements fest. Der Menücontroller zeigt alle untergeordneten Elemente dieser Gruppe in der Dropdownliste an.