Bereitstellen von Automatisierung für VSPackages
Es gibt zwei Standard Möglichkeiten zur Bereitstellung von Automatisierung für Ihre VSPackages: durch Implementieren von VSPackage-spezifischen Objekten und durch Implementieren von Standardautomatisierungsobjekten. Im Allgemeinen werden diese zusammen verwendet, um das Automatisierungsmodell der Umgebung zu erweitern.
VSPackage-spezifische Objekte
Bestimmte Stellen innerhalb des Automatisierungsmodells erfordern, dass Sie Automatisierungsobjekte bereitstellen, die für Ihr VSPackage einzigartig sind. Beispielsweise erfordern neue Projekte unterschiedliche Objekte, die nur von Ihrem VSPackage bereitgestellt werden. Die Namen dieser Objekte werden in die Registrierung eingegeben und über Aufrufe des Umgebungsobjekts DTE
abgerufen.
VSPackage-spezifische Objekte können auch abgerufen werden, wenn ein Automatisierungsanwender das objekt verwendet, das über die Object-Eigenschaft eines Standardobjekts bereitgestellt wird. Beispielsweise verfügt das Standardobjekt Window
über eine Object
Eigenschaft, die allgemein als Windows.Object
Eigenschaft bezeichnet wird. Wenn Verbraucher das Window.Object
in Ihrem VSPackage implementierte Fenster aufrufen, übergeben Sie ein bestimmtes Automatisierungsobjekt Ihres eigenen Designs.
Projekte
VSPackages können das Automatisierungsmodell für neue Projekttypen über ihre eigenen VSPackage-spezifischen Objekte erweitern. Der Hauptzweck der Bereitstellung neuer Automatisierungsobjekte für Ihr VSPackage besteht darin, Ihre eindeutigen Projektobjekte von einem VCProject oder einem VSProject2 Objekt zu unterscheiden. Diese Differenzierung ist praktisch, wenn Sie eine Möglichkeit bieten möchten, den Projekttyp von anderen Projekttypen abzugrenzen, wenn sie in einer Lösung nebeneinander angezeigt werden. Weitere Informationen finden Sie unter Verfügbarmachen von Project-Objekten.
Ereignisse
Die Ereignisarchitektur der Umgebung bietet einen weiteren Ort, an den Sie Ihre eigenen VSPackage-spezifischen Objekte anfügen können. Wenn Sie beispielsweise eigene eindeutige Ereignisobjekte erstellen, können Sie das Ereignismodell der Umgebung für Projekte erweitern. Möglicherweise möchten Sie ihre eigenen Ereignisse bereitstellen, wenn ihrem eigenen Projekttyp ein neues Element hinzugefügt wird. Weitere Informationen finden Sie unter "Exposing Events".
Fensterobjekte
Windows kann ein VSPackage-spezifisches Automatisierungsobjekt zurück an die Umgebung übergeben, wenn sie aufgerufen wird. Sie implementieren ein Objekt, das von IVsExtensibleObjectoder IExtensibleObject von eigenschaften abgeleitet wird oder IDispatch
die Eigenschaften zurückgibt, um das Fensterobjekt zu erweitern, in dem es sich befindet. Sie können z. B. diesen Ansatz verwenden, um Automatisierung für ein Steuerelement bereitzustellen, das in einem Fensterrahmen angeordnet ist. Die Semantik dieses Objekts und alle anderen Objekte, die es erweitern kann, sind ihre Zum Entwerfen. Weitere Informationen finden Sie unter How to: Provide Automation for Windows.
Optionsseiten im Menü "Extras"
Sie können Seiten erstellen, um das Tools-, Optionsautomatisierungsmodell zu erweitern, indem Sie Seiten implementieren und der Registrierung Informationen hinzufügen, um Eigene Optionen zu erstellen. Ihre Seiten können dann wie alle anderen Optionsseiten über das Umgebungsobjektmodell aufgerufen werden. Wenn der Entwurf des Features, das Sie über VSPackages zur Umgebung hinzufügen, Optionsseiten erfordert, sollten Sie auch die Automatisierungsunterstützung hinzufügen. Weitere Informationen finden Sie unter Automatisierungsunterstützung für Optionsseiten.
Standardautomatisierungsobjekte
Um die Automatisierung für Projekte zu erweitern, implementieren Sie auch Standardautomatisierungsobjekte (abgeleitet von IDispatch
), die neben den anderen Projektobjekten stehen und Standardmethoden und Eigenschaften implementieren. Beispiele für Standardobjekte sind die Projektobjekte, die in die Lösungshierarchie eingefügt werden, zProjects
. B. , , Project
und ProjectItem
ProjectItems
. Jeder neue Projekttyp sollte diese Objekte implementieren (und ggf. andere, abhängig von der Semantik Des Projekts).
In einem Sinne bieten diese Objekte den gegenteiligen Vorteil der VSPackage-spezifischen Projektobjekte. Mit den Standardautomatisierungsobjekten kann Ihr Projekt wie jedes andere Projekt, das dieselben Objekte unterstützt, auf generalisierte Weise verwendet werden. Daher kann ein Add-In, das für allgemeine Project
Und ProjectItem
Objekte geschrieben wird, für Projekte eines beliebigen Typs funktionieren. Weitere Informationen finden Sie unter Project Modeling.