Condividi tramite


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

  1. Creare un progetto c# o classificatore di Visual Basic Editor. Assegnare alla soluzione DTETest.

  2. 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

  3. 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;
    
  4. Nella classe di DTETestProvider , importare SVsServiceProvider.

    <Import()>
    Private ServiceProvider As SVsServiceProvider = Nothing
    
    [Import]
    internal SVsServiceProvider ServiceProvider = null;
    
  5. 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));
    
  6. Se è necessario utilizzare l'interfaccia di DTE2 , è possibile eseguire il cast dell'oggetto DTE.

Vedere anche

Concetti

Punti di estensione di editor