Freigeben über


Erstellen von VSCT-Dateien

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

  1. Fügen Sie Ihrem Projekt eine VSCT-Datei hinzu, indem Sie die Schritte in How to: Create a .vsct file.

  2. Fügen Sie dem CommandTable Element 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">
    
    
  3. Fügen Sie im CommandTable Element ein Commands Element hinzu, um alle benutzerdefinierten Menüs, Symbolleisten, Befehlsgruppen und Befehle zu hosten. Damit Ihre benutzerdefinierten UI-Elemente geladen werden können, muss das Commands Element sein Package Attribut auf den Namen des Pakets festgelegt haben.

    Fügen Sie nach dem Commands Element ein Symbols Element 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

  1. Fügen Sie oben im CommandTable Element ein Extern Element für jede externe Datei hinzu, auf die verwiesen werden soll, und legen Sie das href Attribut 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.

  2. Wenn Ihr Paket Befehle aufruft, die von Visual Studio oder anderen Paketen definiert werden, fügen Sie nach dem Commands Element ein UsedCommands Element hinzu. Füllen Sie dieses Element mit einem UsedCommand-Element für jeden Befehl auf, den Sie aufrufen, der nicht Teil des Pakets ist. Legen Sie die guid Elemente und id Attribute UsedCommand auf die GUID- und ID-Werte der befehle fest, 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

  1. Fügen Sie im Symbols Element drei GuidSymbol-Elemente hinzu. Jedes GuidSymbol Element verfügt über ein name Attribut und ein value Attribut. Legen Sie das name Attribut so fest, dass es den Zweck des Elements widerspiegelt. Das value Attribut akzeptiert eine GUID. (Um eine GUID zu generieren, wählen Sie auf der Menü "Extras", wählen Sie "GUID erstellen" und dann "Registrierungsformat" aus.)

    Das erste GuidSymbol Element stellt Ihr Paket dar und hat in der Regel keine untergeordneten Elemente. Das zweite GuidSymbol Element stellt den Befehlssatz dar und enthält alle Symbole, die Menüs, Gruppen und Befehle definieren. Das dritte GuidSymbol Element 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 dritte GuidSymbol Element weglassen.

  2. Fügen Sie im GuidSymbol Element, 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 IDSymbol Element das name Attribut auf den Namen fest, den Sie verwenden, um auf das entsprechende Menü, die Entsprechende Gruppe oder den entsprechenden Befehl zu verweisen, und legen Sie das value Element dann auf eine hexadezimale Zahl fest, die die Befehls-ID darstellt. Keine zwei IDSymbol Elemente mit demselben übergeordneten Element können denselben Wert aufweisen.

  3. Wenn eines ihrer UI-Elemente Symbole erfordert, fügen Sie dem Element, das Ihren Bildspeicher darstellt, ein IDSymbol Element für jedes Symbol hinzu GuidSymbol .

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 Element und Button Groupjedes MenuElement 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

  1. Wenn Sie neue Menüs, Untermenüs, Kontextmenüs oder Symbolleisten definieren, fügen Sie dem Commands Element ein Menus Element hinzu. Fügen Sie dann für jedes zu erstellende Menü dem Menus Element ein Menüelement hinzu.

    Legen Sie die guid Attribute des Menu Elements festid, und legen Sie dann das type Attribut auf die gewünschte Art von Menü fest. Sie können das priority Attribut auch so festlegen, dass die relative Position des Menüs in der übergeordneten Gruppe festgelegt wird.

    Hinweis

    Das priority Attribut gilt nicht für Symbolleisten und Kontextmenüs.

  2. Alle Befehle in der Visual Studio-IDE müssen von Befehlsgruppen gehostet werden, bei denen es sich um die direkten untergeordneten Elemente von Menüs und Symbolleisten handelt. 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 Groups Element erstellen und dann ein Gruppenelement für jede Befehlsgruppe hinzufügen.

    Legen Sie die guid Attribute der einzelnen Group Elemente fest, und legen Sie dann das priority Attribut fest, um die relative Position der Gruppe im übergeordneten id Menü festzulegen. Weitere Informationen finden Sie unter Erstellen wiederverwendbarer Schaltflächengruppen.

  3. Wenn Sie der IDE neue Befehle hinzufügen, fügen Sie dem Commands Element ein Buttons Element hinzu. Fügen Sie dann für jeden Befehl dem Buttons Element ein Button-Element hinzu.

    1. Legen Sie die guid Attribute der einzelnen Button Elemente fest, und legen Sie dann das type Attribut auf die gewünschte Schaltflächenart id fest. Sie können auch das priority Attribut festlegen, um die relative Position des Befehls in der übergeordneten Gruppe festzulegen.

      Hinweis

      Wird für Standardmenübefehle und -schaltflächen auf Symbolleisten verwendet type="button" .

    2. Fügen Sie im Button Element ein Strings-Element hinzu, das ein ButtonText-Element und ein CommandName-Element enthält. Das ButtonText Element stellt die Textbezeichnung für ein Menüelement oder die QuickInfo für eine Symbolleistenschaltfläche bereit. Das CommandName Element stellt den Namen des Befehls bereit, der in der Befehlsquelle verwendet werden soll.

    3. Wenn Der Befehl ein Symbol enthält, erstellen Sie ein Symbolelement im Button Element, und legen Sie dessen guid Attribute id auf das Element für das Bitmap Symbol fest.

      Hinweis

      Symbolleistenschaltflächen müssen Symbole enthalten.

    Weitere Informationen finden Sie unter MenuCommands vs. OleMenuCommands.

  4. Wenn für einen ihrer Befehle Symbole erforderlich sind, fügen Sie dem Commands Element ein Bitmaps-Element hinzu. Fügen Sie dann für jedes Symbol dem Bitmaps Element ein Bitmap-Element hinzu. 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

  1. Erstellen Sie für typische übergeordnete Elemente ein Parent Element in jedem Menu, Groupund Command element, das in Ihrem Paket definiert ist.

    Das Ziel des Parent Elements ist das Menü oder die Gruppe, das das Menü, die Gruppe oder den Befehl enthält.

    1. Legen Sie das guid Attribut auf den Namen des GuidSymbol Elements 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.

    2. Legen Sie das id Attribut so fest, dass es dem id Attribut 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

  1. Fügen Sie nach dem Commands-Element ein CommandPlacements-Element hinzu.

  2. Fügen Sie im CommandPlacements Element ein CommandPlacement Element für jedes Menü, jede Gruppe oder jeden Befehl hinzu, um es zu platzieren.

    Jedes Element oder Parent Element CommandPlacement platziert ein Menü, eine Gruppe oder einen Befehl an einem IDE-Speicherort. 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 ein CommandPlacement Element für jeden Speicherort hinzu.

  3. Legen Sie die guid Attribute id und Attribute jedes CommandPlacement Elements auf das Hostingmenü oder die Gruppe fest, genau wie für ein Parent Element. Sie können das priority Attribut auch so festlegen, dass die relative Position des UI-Elements festgelegt wird.

    Sie können die Platzierung kombinieren, indem Sie die Übergeordneten und die Befehlsplatzierung verwenden. 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

  1. Um ein UI-Element nur in bestimmten UI-Kontexten sichtbar zu machen, z. B. wenn eine Lösung geladen wird, verwenden Sie Sichtbarkeitseinschränkungen.

    1. Fügen Sie nach dem Commands-Element ein VisibilityConstraints-Element hinzu.

    2. Fügen Sie für jedes UI-Element, das eingeschränkt werden soll, ein VisibilityItem-Element hinzu.

    3. Legen Sie für jedes VisibilityItem Element die guid Attribute und id Attribute auf das Menü, die Gruppe oder den Befehl fest, und legen Sie dann das context Attribut auf den gewünschten Ui-Kontext fest, wie in der UIContextGuids80 Klasse definiert.

  2. Verwenden Sie eine oder mehrere der folgenden Befehlskennzeichnungen, um die Sichtbarkeit oder Verfügbarkeit eines UI-Elements im Code festzulegen:

    • DefaultDisabled

    • DefaultInvisible

    • DynamicItemStart

    • DynamicVisibility

    • NoShowOnMenuController

    • NotInTBList

    Weitere Informationen finden Sie im CommandFlag-Element .

  3. Um die Darstellung eines Elements zu ändern oder seine Darstellung dynamisch zu ändern, verwenden Sie ein oder mehrere der folgenden Befehlskennzeichnungen:

    • AlwaysCreate

    • CommandWellOnly

    • DefaultDocked

    • DontCache

    • DynamicItemStart

    • FixMenuController

    • IconAndText

    • Pict

    • StretchHorizontally

    • TextMenuUseButton

    • TextChanges

    • TextOnly

    Weitere Informationen finden Sie im CommandFlag-Element .

  4. Um zu ändern, wie ein Element reagiert, wenn es Befehle empfängt, verwenden Sie ein oder mehrere der folgenden Befehlskennzeichnungen:

    • AllowParams

    • CaseSensitive

    • CommandWellOnly

    • FilterKeys

    • NoAutoComplete

    • NoButtonCustomize

    • NoKeyCustomize

    • NoToolbarClose

    • PostExec

    • RouteToDocs

    • TextIsAnchorCommand

    Weitere Informationen finden Sie im CommandFlag-Element .

  5. Wenn Sie eine menüabhängige Tastenkombination an ein Menü oder ein Element in einem Menü anfügen möchten, fügen Sie dem Element für das ButtonText 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.

  6. Verwenden Sie das KeyBindings-Element , um eine menüunabhängige Tastenkombination an einen Befehl anzufügen. Weitere Informationen finden Sie im KeyBinding-Element .

  7. Verwenden Sie das LocCanonicalName Element, 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 types Attributbeschreibungen im Menü-, Schaltflächen- und Kombinationselement .

    • Kombinationsfeld: Ein Kombinationsfeld ist eine Dropdownliste, die auf einer Symbolleiste verwendet werden kann. Wenn Sie der Benutzeroberfläche Kombinationsfelder hinzufügen möchten, erstellen Sie ein Combos-Element im Commands Element. Fügen Sie dann dem Combos Element ein Combo Element für jedes hinzuzufügende Kombinationsfeld hinzu. Combo Elemente weisen die gleichen Attribute und untergeordneten Elemente wie Button Elemente auf und weisen DefaultWidth diese ebenfalls auf idCommandList . Das DefaultWidth Attribut legt die Breite in Pixel fest, und das idCommandList Attribut 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 Menu Element, und legen Sie dessen type Attribut je nach gewünschtem Verhalten auf MenuController oder MenuControllerLatchedfest. Um einen Menücontroller aufzufüllen, legen Sie ihn als übergeordnetes Element eines Group Elements fest. Der Menücontroller zeigt alle untergeordneten Elemente dieser Gruppe in der Dropdownliste an.