Exemplarische Vorgehensweise: Das DTE-Objekt aus einer Editor-Erweiterung zugreifen
Indem Sie das DTE-Objekt zugreifen, können Sie Visual Studio auf unterschiedliche Arten automatisieren. Sie können das DTE-Objekt aus einem Visual Studio-Add-In abrufen, indem Sie den Programmbezeichner (ProgID) verweisen. Weitere Informationen finden Sie unter Verweisen auf Automatisierungsassemblys und das DTE2-Objekt. Im Allgemeinen in VSPackages, können Sie das DTE-Objekt abrufen, indem Sie die GetService-Methode mit dem Typ des DTE-Objekts aufrufen. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Verwaltetes VSPackages von Automatisierung erweitern. In den Erweiterungen des Managed Extensibility Framework (MEF) können Sie SVsServiceProvider importieren und die GetService-Methode einem Typ DTE aufrufen.
Vorbereitungsmaßnahmen
Zum Abschließen dieser exemplarischen Vorgehensweise müssen Sie das Visual Studio 2010 SDK installieren. Weitere Informationen über das Visual Studio-SDK und deren Verwendung finden Sie Visual Studio Extensibility Developer Center auf der MSDN-Website herunterlädt.
Das DTE-Objekt abrufen
Verwenden Sie zum Abrufen Diensterbringer vom DTE-Objekt
Erstellen Sie ein Projekt Klassifizierungs C#- oder Visual Basic-Editors. Geben Sie der Projektmappe DTETest.
Fügen Sie dem Projekt die folgenden Assemblys hinzu. Sie müssen Studio-Installations \ Visual Durchsuchen Ordner \ Common7 \ IDE \ PublicAssemblies \.
EnvDTE.dll
EnvDTE80.dll
Microsoft.VisualStudio.Shell.Immutable.10.0
Wechseln Sie zur DTETest-Datei, und fügen Sie die folgenden using-Direktiven hinzu (Imports-Anweisungen in Visual Basic).
Imports EnvDTE Imports EnvDTE80 Imports Microsoft.VisualStudio.Shell
using EnvDTE; using EnvDTE80; using Microsoft.VisualStudio.Shell;
In der DTETestProvider-Klasse importieren Sie SVsServiceProvider.
<Import()> Private ServiceProvider As SVsServiceProvider = Nothing
[Import] internal SVsServiceProvider ServiceProvider = null;
In der GetClassifier()-Methode fügen Sie den folgenden Code hinzu.
Dim dte As DTE dte = CType(ServiceProvider.GetService(GetType(DTE)), DTE)
DTE dte = (DTE)ServiceProvider.GetService(typeof(DTE));
Wenn Sie die DTE2-Schnittstelle verwenden müssen, können Sie das DTE-Objekt auf diesen Typ umwandeln.