Delen via


XML-opdrachttabelbestanden (.vsct) ontwerpen

Een XML-opdrachttabelbestand (.vsct) beschrijft de indeling en het uiterlijk van opdrachtitems voor een VSPackage. Opdrachtitems bevatten knoppen, keuzelijsten met invoervak, menu's, werkbalken en groepen opdrachtitems. In dit artikel worden xml-opdrachttabelbestanden beschreven, hoe deze van invloed zijn op opdrachtitems en menu's en hoe u ze maakt.

Opdrachten, menu's, groepen en het VSCT-bestand

De VSCT-bestanden zijn ingedeeld rond opdrachten, menu's en opdrachtgroepen. XML-tags in het VSCT-bestand vertegenwoordigen elk van deze items, samen met andere gekoppelde items, zoals opdrachtknoppen, opdrachtplaatsing en bitmaps.

Wanneer u een nieuwe VSPackage maakt door de Visual Studio-pakketsjabloon uit te voeren, genereert de sjabloon een VSCT-bestand met de benodigde elementen voor een menuopdracht, taakvenster of aangepaste editor, afhankelijk van uw selecties. Dit VSCT-bestand kan vervolgens worden gewijzigd om te voldoen aan de vereisten van een specifieke VSPackage. Zie Menu's en opdrachten uitbreiden voor voorbeelden van het wijzigen van een VSCT-bestand.

Zie Een .vsct-bestand maken om een nieuw, leeg VSCT-bestand te maken. Nadat u het bestand hebt gemaakt, voegt u XML-elementen, -kenmerken en -waarden toe aan het bestand om de indeling van het opdrachtitem te beschrijven. Zie de naslaginformatie over het VSCT XML-schema voor een gedetailleerd XML-schema.

Verschillen tussen .ctc- en .vsct-bestanden

Hoewel de betekenis achter de XML-tags in een VSCT-bestand hetzelfde is als die tags in de nu afgeschafte .ctc-bestandsindeling , is de implementatie ervan iets anders:

  • De nieuwe <externe> tag is waar u naar andere .h-bestanden verwijst die moeten worden gecompileerd, zoals die bestanden voor de Visual Studio-werkbalk.

  • Hoewel .vsct-bestanden de instructie /include ondersteunen, zoals CTC-bestanden doen, bevat het ook een nieuw <importelement> . Het verschil is dat /includealle informatie bevat, terwijl <importeren> alleen de namen bevat.

  • Hoewel .ctc-bestanden een headerbestand vereisen waarin u uw preprocessor-instructies definieert, is er geen vereiste voor .vsct-bestanden . Plaats in plaats daarvan uw instructies in de symbooltabel, die zich in de <symboolelementen> bevindt, onderaan het VSCT-bestand .

  • .vsct-bestanden bevatten een <aantekeningstag> , waarmee u alle gewenste informatie, zoals notities of zelfs afbeeldingen, kunt insluiten.

  • Waarden worden opgeslagen als kenmerken van het item.

  • Opdrachtvlagmen kunnen afzonderlijk of gestapeld worden opgeslagen. IntelliSense werkt echter niet op gestapelde opdrachtvlagmen. Zie het element CommandFlag voor meer informatie over opdrachtvlag-markeringen.

  • U kunt meerdere typen opgeven, zoals vervolgkeuzelijsten voor splitsen, combinaties, enzovoort.

  • GUID's worden niet gevalideerd.

  • Elk UI-element heeft een tekenreeks die de tekst vertegenwoordigt die ermee wordt weergegeven.

  • De ouder is optioneel. Als u dit weglaat, wordt de waardegroep Onbekend gebruikt.

  • Het argument Pictogram is optioneel.

  • Bitmapsectie: deze sectie is hetzelfde als in een CTC-bestand , behalve dat u nu een bestandsnaam kunt opgeven via Href die wordt opgehaald door de vsct.exe compiler tijdens het compileren.

  • ResID: De oude Bitmap-resource-ID kan worden gebruikt en werkt nog steeds hetzelfde als in .ctc-bestanden.

  • HRef: Een nieuwe methode waarmee u een bestandsnaam voor de bitmapresource kunt opgeven. Hierbij wordt ervan uitgegaan dat alle worden gebruikt, zodat u de sectie Gebruikt weglaat. De compiler zoekt eerst naar lokale resources voor het bestand, vervolgens op netwerkshares en alle resources die zijn gedefinieerd door de /I-schakeloptie.

  • Sleutelbinding: U hoeft geen emulator meer op te geven. Als u er een opgeeft, gaat de compiler ervan uit dat de editor en de emulator hetzelfde zijn.

  • Keychord: Keychord is verwijderd. De nieuwe indeling is Key1,Mod1,Key2,Mod2. U kunt een teken, hexadecimale of VK-constante opgeven.

De nieuwe compiler, vsct.exe, compileert zowel .ctc - als .vsct-bestanden . De oude ctc.exe-compiler herkent of compileert echter geen VSCT-bestanden .

U kunt de vsct.exe-compiler gebruiken om een bestaand .cto-bestand te converteren naar een .vsct-bestand . Zie Instructies voor meer informatie : Een VSCT-bestand maken op basis van een bestaand .cto-bestand.

De .vsct-bestandselementen

De opdrachttabel heeft de volgende hiërarchie en elementen:

  • CommandTable-element: Vertegenwoordigt alle opdrachten, menugroepen en menu's die zijn gekoppeld aan de VSPackage.

  • Extern element: verwijst naar alle externe .h-bestanden die u wilt samenvoegen met het VSCT-bestand .

  • Inclusief element: verwijst naar eventuele extra headerbestanden (.h) die u samen met uw VSCT-bestand wilt compileren . Een VSCT-bestand kan .h-bestanden bevatten die constanten bevatten die opdrachten, menugroepen en menu's definiëren die de IDE of een andere VSPackage biedt.

  • Het element Opdrachten: vertegenwoordigt alle afzonderlijke opdrachten die kunnen worden uitgevoerd. Elke opdracht heeft de volgende vier subelementen:

  • Menu-element: Vertegenwoordigt alle menu's en werkbalken in de VSPackage. Menu's zijn containers voor groepen opdrachten.

  • Groepselement: Vertegenwoordigt alle groepen in VSPackage. Groepen zijn verzamelingen afzonderlijke opdrachten.

  • Knoppenelement: Vertegenwoordigt alle opdrachtknoppen en menu-items in de VSPackage. Knoppen zijn visuele besturingselementen die kunnen worden gekoppeld aan opdrachten.

  • Bitmaps-element: Geeft alle bitmaps weer voor alle knoppen in VSPackage. Bitmaps zijn afbeeldingen die naast of op de opdrachtknoppen worden weergegeven, afhankelijk van de context.

  • Het element CommandPlacements: Geeft aanvullende locaties aan waar de afzonderlijke opdrachten moeten worden geplaatst in de menu's van uw VSPackage.

  • Het element VisibilityConstraints: Hiermee geeft u op of een opdracht altijd of alleen in bepaalde contexten wordt weergegeven, bijvoorbeeld wanneer een bepaald dialoogvenster of venster wordt weergegeven. Menu's en opdrachten met een waarde voor dit element worden alleen weergegeven wanneer de opgegeven context actief is. Het standaardgedrag is om de opdracht altijd weer te geven.

  • KeyBindings-element: hiermee geeft u eventuele sleutelbindingen voor de opdrachten op. Een of meer toetsencombinaties die moeten worden ingedrukt om de opdracht uit te voeren, zoals Ctrl+S.

  • UsedCommands-element: informeert de Visual Studio-omgeving dat hoewel de opgegeven opdracht wordt geïmplementeerd door andere code, wanneer de huidige VSPackage actief is, de opdracht-implementatie biedt.

  • Het element Symbolen: Bevat de symboolnamen en GUID-id's voor al uw opdrachten in het pakket.

Richtlijnen voor het ontwerpen van .vsct-bestanden

Volg deze richtlijnen om een VSCT-bestand te ontwerpen.

  • Opdrachten kunnen alleen in groepen worden geplaatst, groepen kunnen alleen in menu's worden geplaatst en menu's kunnen alleen in groepen worden geplaatst. Alleen menu's worden daadwerkelijk weergegeven in de IDE, groepen en opdrachten niet.

  • Submenu's kunnen niet rechtstreeks aan een menu worden toegewezen, maar moeten worden toegewezen aan een groep, die op zijn beurt is toegewezen aan een menu.

  • Opdrachten, submenu's en groepen kunnen worden toegewezen aan één bovenliggende groep of menu met behulp van het parent veld van hun definiërende richtlijn.

  • Het ordenen van een opdrachttabel alleen via de bovenliggende velden in de instructies heeft een aanzienlijke beperking. De instructies voor het definiëren van objecten kunnen slechts één ouderargument bevatten.

  • Voor het hergebruik van opdrachten, groepen of submenu's is het gebruik van een nieuwe instructie vereist om een nieuw exemplaar van het object te maken met een eigen GUID:ID paar.

  • Elk GUID:ID paar moet uniek zijn. Het opnieuw gebruiken van een opdracht die bijvoorbeeld is geplaatst in een menu, een werkbalk of in een contextmenu, wordt verwerkt door de IOleCommandTarget interface.

  • Opdrachten en submenu's kunnen ook worden toegewezen aan meerdere groepen en groepen kunnen worden toegewezen aan meerdere menu's met behulp van het element Opdrachten.

.vsct-bestandsaantekeningen

Als u wijzigingen aanbrengt in een VSCT-bestand nadat u het bestand hebt gecompileerd en in een systeemeigen satelliet-DLL hebt geplaatst, moet u devenv.exe /setup /nosetupvstemplates uitvoeren. Dit dwingt de opgegeven VSPackage-resources in het experimentele register opnieuw te laten lezen en zorgt ervoor dat de interne database die Visual Studio beschrijft opnieuw wordt opgebouwd.

Tijdens de ontwikkeling kunnen meerdere VSPackage-projecten worden aangemaakt en geregistreerd in de experimentele register-hive, wat kan leiden tot verwarrende rommel in de IDE. U kunt dit oplossen door de experimentele hive opnieuw in te stellen op de standaardinstellingen om alle geregistreerde VSPackages te verwijderen en eventuele wijzigingen die ze in de IDE hebben aangebracht. Om de experimentele hive opnieuw in te stellen, gebruikt u het hulpprogramma CreateExpInstance.exe dat met de Visual Studio SDK wordt meegeleverd. U vindt deze op:

%PROGRAMFILES(x86)%\Visual Studio\<version> SDK\VisualStudioIntegration\Tools\Bin\CreateExpInstance.exe

Voer het hulpprogramma uit met behulp van de opdracht CreateExpInstance /Reset. Houd er rekening mee dat met dit hulpprogramma alle geregistreerde VSPackages die niet normaal zijn geïnstalleerd met Visual Studio, worden verwijderd uit de experimentele hive.