Benutzerdefinierte Benutzeroberfläche (Quellcodeverwaltung VSPackage)
Ein VSPackage deklariert seine Menüelemente und deren Standardzustände über die Visual Studio-Befehlstabellendatei (VSCT). Die integrierte Visual Studio-Entwicklungsumgebung (Integrated Development Environment, IDE) zeigt die Menüelemente in ihren Standardzuständen an, bis das VSPackage geladen wird. Anschließend wird die QueryStatus Methode aufgerufen, um Menüelemente zu aktivieren oder zu deaktivieren.
Ein VSPackage kann einen Registrierungsschlüssel festlegen, sodass das VSPackage je nach Benutzeroberflächenkontext (Command User Interface) automatisch geladen werden kann, obwohl in der Regel ein Quellcodeverwaltungs-VSPackage bei Bedarf geladen werden sollte, anstatt einfach zu einem bestimmten UI-Kontext zu wechseln. Weitere Informationen zum AutoLoadPackages-Registrierungsschlüssel finden Sie unter Verwalten von VSPackages.
VSPackage UI
Ein Quellcodeverwaltungspaket wird als VSPackage implementiert und verwendet keine Benutzeroberfläche von Visual Studio. Jedes Quellcodeverwaltungs-VSPackage muss eigene UI-Elemente angeben, z. B. Menüelemente, Menügruppen, Toolfenster, Symbolleisten und alle erforderlichen Ui zum Festlegen von Optionen, die für das Quellcodeverwaltungs-VSPackage spezifisch sind. Diese UI-Elemente können statisch oder dynamisch aktiviert werden. Statische UI-Elemente werden in einer VSCT-Datei definiert und angezeigt, ob das VSPackage geladen wird oder nicht. Dynamische UI-Elemente können je nach einem bestimmten Befehlsbenutzeroberflächenkontext, z vsContextNoSolution. B. oder als Ergebnis eines Aufrufs der QueryStatus Methode, sichtbar sein. Die Sichtbarkeit dynamischer UI-Elemente entspricht der Strategie für das verzögerte Laden von VSPackages.
UI-Einschränkungen für die Quellcodeverwaltung VSPackages
Da das Quellcodeverwaltungs-VSPackage nach dem Laden nicht aus der IDE entfernt werden kann, muss vsPackage in den inaktiven Zustand wechseln können. Wenn ein VSPackage Benachrichtigung empfängt, dass es nicht mehr aktiv ist, deaktiviert vsPackage die Benutzeroberfläche und ignoriert alle externen IDE-Interaktionen. Die Implementierung der QueryStatus Methode von VSPackage sollte Befehle ausblenden, wenn das VSPackage nicht aktiv ist.
Jedes Quellcodeverwaltungs-VSPackage muss die IVsSccProvider
Schnittstelle implementieren. Zwei Methoden auf der Schnittstelle SetActive und SetInactivemüssen vom VSPackage implementiert werden.
Die Quellcodeverwaltung VSPackage hat möglicherweise verschiedene IDE-Ereignisse abonniert, die von den IVsSolutionEvents3, IVsTrackProjectDocumentsEvents2usw. implementiert werden. Außerdem hat das VSPackage möglicherweise registrierungsfähige Rückrufschnittstellen implementiert, z. B. die IVsSolutionPersistence. Diese Schnittstellen müssen alle ignoriert werden, wenn sie inaktiv sind.
Die folgende Liste zeigt die Schnittstellen, die vom aktiven Zustand eines Quellcodeverwaltungs-VSPackage betroffen sind:
Nachverfolgen von Projektdokumentereignissen.
Lösungsereignisse.
Lösungspersistenzschnittstellen. Wenn inaktiv, sollten Pakete nicht in SLN - und SUO-Dateien schreiben.
Eigenschaften extender.
Die erforderlichen IVsQueryEditQuerySave2 und IVsSccManager2, und auch alle optionalen Schnittstellen, die der Quellcodeverwaltung zugeordnet sind, werden nicht aufgerufen, wenn das Quellcodeverwaltungs-VSPackage inaktiv ist.
Wenn die Visual Studio-IDE gestartet wird, legt Visual Studio den Befehls-UI-Kontext auf die ID der aktuellen VSPackage-ID des Standardquellsteuerelements fest. Dies bewirkt, dass die statische Benutzeroberfläche des aktiven Quellcodeverwaltungs-VSPackage in der IDE angezeigt wird, ohne dass die VSPackage tatsächlich geladen wird. Visual Studio hält für das VSPackage an, um sich mit Visual Studio zu registrieren, bevor IVsRegisterScciProvider er Aufrufe an das VSPackage-Element vorgibt.
In der folgenden Tabelle werden spezifische Details dazu beschrieben, wie die Visual Studio-IDE unterschiedliche UI-Elemente ausblendet.
UI-Element | Beschreibung |
---|---|
Menüs und Symbolleisten | Das Quellcodeverwaltungspaket muss die Anfangsmenü- und Symbolleistensichtszustände auf die Quellcodeverwaltungspaket-ID im Abschnitt "VisibilityConstraints " der VSCT-Datei festlegen. Dadurch kann die Visual Studio-IDE den Status der Menüelemente entsprechend festlegen, ohne das VSPackage zu laden und eine Implementierung der QueryStatus Methode aufzurufen. |
Toolfenster | Die Quellcodeverwaltung VSPackage blendet alle Toolfenster aus, die sie besitzt, wenn sie inaktiv ist. |
VsPackage-spezifische Optionsseiten für die Quellcodeverwaltung | Der Registrierungsschlüssel HKLM\SOFTWARE\Microsoft\VisualStudio\X.Y\ToolsOptionsPages\VisibilityCmdUIContexts ermöglicht es einem VSPackage, den Kontext festzulegen, in dem seine Optionsseiten angezeigt werden müssen. Ein Registrierungseintrag unter diesem Schlüssel müsste mithilfe der Dienst-ID (SID) des Quellcodeverwaltungsdiensts erstellt und ihm einen DWORD-Wert von 1 zugewiesen werden. Wenn ein UI-Ereignis in einem Kontext auftritt, bei dem das Quellcodeverwaltungs-VSPackage registriert ist, wird das VSPackage aufgerufen, wenn es aktiv ist. |