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.
In Visual Studio-Befehlen werden mehrere unterschiedliche Komponenten behandelt. Befehle werden vom innersten Kontext, der auf der aktuellen Auswahl basiert, an den äußersten Kontext (auch als global bezeichnet) weitergeleitet. Weitere Informationen finden Sie unter "Befehlsverfügbarkeit".
Reihenfolge der Befehlsauflösung
Befehle werden über die folgenden Ebenen des Befehlskontexts übergeben:
Add-Ins: Die Umgebung bietet den Befehl zuerst allen Add-Ins, die vorhanden sind.
Prioritätsbefehle: Diese Befehle werden mithilfe von IVsRegisterPriorityCommandTarget registriert. Sie werden für jeden Befehl in Visual Studio aufgerufen und in der Reihenfolge aufgerufen, in der sie registriert wurden.
Kontextmenübefehle: Ein Befehl, der sich in einem Kontextmenü befindet, wird zuerst dem Befehlsziel angeboten, das dem Kontextmenü zugeordnet ist, und danach dem üblichen Routing.
Befehlsziele für Symbolleistensatz: Diese Befehlsziele werden beim Aufrufen SetupToolbar2registriert. Der
pCmdTargetParameter kann seinnull. Wenn es sich nicht umnullhandelt, wird dieses Kommandoziel verwendet, um beliebige Befehle zu aktualisieren, die sich auf der Symbolleiste befinden, die Sie einrichten. Wenn die Shell Ihre Symbolleiste einrichtet, übergibt sie den Fensterrahmen alspCmdTarget, sodass alle Aktualisierungen der Befehle auf Ihrer Symbolleiste über den Fensterrahmen fließen, selbst wenn die Symbolleiste nicht im Fokus ist.Toolfenster: Toolfenster, die normalerweise die IVsWindowPane Schnittstelle implementieren, sollten auch die IOleCommandTarget Schnittstelle implementieren, damit Visual Studio das Befehlsziel abrufen kann, wenn das Toolfenster das aktive Fenster ist. Wenn das Toolfenster, das den Fokus besitzt, jedoch das Projektfenster ist, wird der Befehl an die IVsUIHierarchy Schnittstelle weitergeleitet, die das gemeinsame übergeordnete Element der ausgewählten Elemente ist. Wenn diese Auswahl mehrere Projekte umfasst, wird der Befehl an die IVsSolution Hierarchie weitergeleitet. Die IVsUIHierarchy Schnittstelle enthält die Methoden QueryStatusCommand und ExecCommand, die den entsprechenden Befehlen auf der IOleCommandTarget Schnittstelle entsprechen.
Dokumentfenster: Wenn der Befehl das
RouteToDocsKennzeichen in seiner VSCT-Datei festgelegt hat, sucht Visual Studio nach einem Befehlsziel im Dokumentansichtsobjekt, das entweder eine Instanz einer IVsWindowPane Schnittstelle oder eine Instanz eines Dokumentobjekts ist (typischerweise eine IVsTextLines Schnittstelle oder eine IVsTextBuffer Schnittstelle). Wenn das Dokumentansichtsobjekt den Befehl nicht unterstützt, leitet Visual Studio den Befehl an die IOleCommandTarget zurückgegebene Schnittstelle weiter. (Dies ist eine optionale Schnittstelle für Dokumentdatenobjekte.)Aktuelle Hierarchie: Die aktuelle Hierarchie kann das Projekt sein, das das aktive Dokumentfenster oder die im Projektmappen-Explorer ausgewählte Hierarchie besitzt. Visual Studio sucht nach der IOleCommandTarget Schnittstelle, die in der aktuellen oder aktiven Hierarchie implementiert ist. Die Hierarchie sollte Befehle unterstützen, die gültig sind, wenn die Hierarchie aktiv ist, auch wenn ein Dokumentfenster eines Projektelements den Fokus hat. Befehle, die nur angewendet werden, wenn der Projektmappen-Explorer den Fokus hat, müssen jedoch mithilfe der IVsUIHierarchy Schnittstelle und der QueryStatusCommand und ExecCommand Methoden dieser Schnittstelle unterstützt werden.
Befehle "Ausschneiden", "Kopieren", "Einfügen", " Löschen", " Umbenennen", " Eingabetaste" und " DoubleClick " erfordern eine spezielle Behandlung. Informationen zum Behandeln von Befehlen zum Löschen und Entfernen in Hierarchien finden Sie in der IVsHierarchyDeleteHandler Schnittstelle.
Global: Wenn ein Befehl nicht von den zuvor erwähnten Kontexten behandelt wurde, versucht Visual Studio, ihn an den VSPackage weiterzuleiten, der einen Befehl besitzt, der die IOleCommandTarget Schnittstelle implementiert. Wenn das VSPackage noch nicht geladen wurde, wird es nicht geladen, wenn Visual Studio die QueryStatus Methode aufruft. Die VSPackage wird nur geladen, wenn die Exec Methode aufgerufen wird.