Delen via


Aangepaste gebruikersinterface (broncodebeheer VSPackage)

Een VSPackage declareert de menu-items en de standaardstatussen via het Visual Studio-opdrachttabelbestand (.vsct). De IDE (Integrated Development Environment) van Visual Studio geeft de menu-items weer in de standaardstatussen totdat vsPackage is geladen. Vervolgens wordt de QueryStatus methode aangeroepen om menu-items in of uit te schakelen.

Een VSPackage kan een registersleutel instellen, zodat de VSPackage automatisch kan worden geladen, afhankelijk van een gebruikersinterfacecontext (Command User Interface), hoewel doorgaans een broncodebeheer VSPackage op aanvraag moet laden in plaats van gewoon over te schakelen naar een bepaalde UI-context. Zie VSPackages beheren voor meer informatie over de registersleutel AutoLoadPackages.

VSPackage-gebruikersinterface

Een broncodebeheerpakket wordt geïmplementeerd als een VSPackage en maakt geen gebruik van een gebruikersinterface van Visual Studio. Elk broncodebeheer VSPackage moet zijn eigen UI-elementen opgeven, zoals menu-items, menugroepen, vensters van hulpprogramma's, werkbalken en elke vereiste gebruikersinterface voor het instellen van opties die specifiek zijn voor het broncodebeheer VSPackage. Deze UI-elementen kunnen statisch of dynamisch worden ingeschakeld. Statische UI-elementen worden gedefinieerd in een VSCT-bestand en worden weergegeven of de VSPackage al dan niet wordt geladen. Dynamische UI-elementen zijn mogelijk zichtbaar, afhankelijk van een bepaalde opdracht-UI-context, zoals vsContextNoSolution, of als gevolg van een aanroep naar de QueryStatus methode. De zichtbaarheid van dynamische UI-elementen voldoet aan de strategie voor vertraagd laden van VSPackages.

UI-beperkingen voor broncodebeheer VSPackages

Omdat het bronbeheer VSPackage niet kan worden verwijderd uit de IDE nadat het is geladen, moet de VSPackage een inactieve status kunnen invoeren. Wanneer een VSPackage een melding ontvangt dat deze niet meer actief is, wordt de gebruikersinterface van VSPackage uitgeschakeld en worden externe IDE-interacties genegeerd. De implementatie van de QueryStatus methode van VSPackage moet opdrachten verbergen wanneer vspackage niet actief is.

Elk broncodebeheer VSPackage moet de IVsSccProvider interface implementeren. Twee methoden op de interface SetActive en SetInactivemoeten worden geïmplementeerd door de VSPackage.

Het bronbeheer VSPackage kan zijn geabonneerd op verschillende IDE-gebeurtenissen, die worden geïmplementeerd door de IVsSolutionEvents3, IVsTrackProjectDocumentsEvents2, enzovoort. De VSPackage kan ook callback-interfaces met register-functionaliteit hebben geïmplementeerd, zoals de IVsSolutionPersistence. Deze interfaces moeten allemaal worden genegeerd wanneer ze inactief zijn.

De volgende lijst toont de interfaces die worden beïnvloed door de actieve status van een bronbeheer VSPackage:

  • Gebeurtenissen van projectdocumenten bijhouden.

  • Oplossingsevenementen.

  • Persistentie-interfaces voor oplossingen. Als pakketten niet inactief zijn, mogen ze niet naar .sln- en SUO-bestanden schrijven.

  • Eigenschap-uitbreidingen.

    De vereiste IVsQueryEditQuerySave2 en IVsSccManager2, en ook eventuele optionele interfaces die zijn gekoppeld aan broncodebeheer, worden niet aangeroepen wanneer het bronbeheer VSPackage inactief is.

    Wanneer Visual Studio IDE wordt gestart, stelt Visual Studio de UI-context van de opdracht in op de huidige standaard VSPackage-bronbeheer-id. Dit zorgt ervoor dat de statische gebruikersinterface van het actieve broncodebeheer VSPackage wordt weergegeven in de IDE zonder dat de VSPackage daadwerkelijk wordt geladen. Visual Studio pauzeert voor de VSPackage om zich te registreren bij Visual Studio via de IVsRegisterScciProvider voordat er eventuele aanroepen naar de VSPackage worden uitgevoerd.

    In de volgende tabel worden specifieke details beschreven over hoe de Visual Studio IDE verschillende UI-items verbergt.

UI-item Description
Menu's en werkbalken Het broncodebeheerpakket moet het eerste menu en de zichtbaarheidsstatus van de werkbalk instellen op de id van het broncodebeheerpakket in de sectie VisibilityConstraints van het VSCT-bestand . Hierdoor kan de Visual Studio IDE de status van de menu-items instellen zonder de VSPackage te laden en een implementatie van de QueryStatus methode aan te roepen.
Vensters van hulpprogramma's Het broncodebeheer VSPackage verbergt alle hulpprogrammavensters die het bezit wanneer het inactief wordt gemaakt.
Pagina's met opties voor broncodebeheer voor VSPackage Met de registersleutel HKLM\SOFTWARE\Microsoft\VisualStudio\X.Y\ToolsOptionsPages\VisibilityCmdUIContexts kan een VSPackage de contexten instellen waarin de optiespagina's moeten worden weergegeven. Een registervermelding onder deze sleutel moet worden gemaakt met behulp van de service-id (SID) van de bronbeheerservice en het toewijzen van een DWORD-waarde van 1. Wanneer een UI-gebeurtenis plaatsvindt in een context waarmee het bronbeheer VSPackage is geregistreerd, wordt de VSPackage aangeroepen als deze actief is.