procedura dettagliata: Accedere all'oggetto DTE da un'estensione dell'editor
Accesso all'oggetto DTE, è possibile automatizzare Visual Studio in diversi modi. È possibile ottenere l'oggetto DTE da un componente aggiuntivo di Visual Studio riferendoti al suo ProgID o al progID). Per ulteriori informazioni, vedere Riferimenti agli assembly di automazione e all'oggetto DTE2. In generale in VSPackages, è possibile ottenere l'oggetto DTE chiamando il metodo di GetService con il tipo dell'oggetto DTE. Per ulteriori informazioni, vedere procedura dettagliata: Vspackage gestito estensione utilizzando l'automazione. Nelle estensioni gestite del (MEF) Framework di estensibilità, è possibile importare SVsServiceProvider quindi chiamare il metodo di GetService con un tipo di DTE.
Prerequisiti
Per completare questa procedura dettagliata, è necessario installare Visual Studio 2010 SDK. Per informazioni su Visual Studio SDK e come download, vedere Centro per sviluppatori di estensibilità di Visual Studio il sito Web MSDN.
Ottenere l'oggetto DTE
Per ottenere l'oggetto DTE oggetto da ServiceProvider
Creare un progetto c# o classificatore di Visual Basic Editor. Assegnare alla soluzione DTETest.
Aggiungere i seguenti riferimenti ad assembly al progetto. È necessario spostarsi nella cartella \ setup \ Common7 \ IDE \ PublicAssemblies di Visual Studio \.
EnvDTE.dll
EnvDTE80.dll
Microsoft.VisualStudio.Shell.Immutable.10.0
Passare al file di DTETest e aggiungere le seguenti direttive di using (istruzioni diImports in Visual Basic).
Imports EnvDTE Imports EnvDTE80 Imports Microsoft.VisualStudio.Shell
using EnvDTE; using EnvDTE80; using Microsoft.VisualStudio.Shell;
Nella classe di DTETestProvider , importare SVsServiceProvider.
<Import()> Private ServiceProvider As SVsServiceProvider = Nothing
[Import] internal SVsServiceProvider ServiceProvider = null;
Nel metodo di GetClassifier() , aggiungere il codice seguente.
Dim dte As DTE dte = CType(ServiceProvider.GetService(GetType(DTE)), DTE)
DTE dte = (DTE)ServiceProvider.GetService(typeof(DTE));
Se è necessario utilizzare l'interfaccia di DTE2 , è possibile eseguire il cast dell'oggetto DTE.