Condividi tramite


Procedura: ottenere riferimenti agli oggetti DTE e DTE2

Nota

In Visual Studio 2013 i componenti aggiuntivi sono deprecati.Si consiglia di eseguire l'aggiornamento dei componenti aggiuntivi alle estensioni di VSPackage.Per ulteriori informazioni, vedere Domande frequenti: conversione di componenti aggiuntivi in VSPackage Extensions.

Nell'assembly EnvDTE, l'oggetto DTE rappresenta l'ambiente di sviluppo integrato (IDE, Integrated Development Environment) di Visual Studio ed è l'oggetto di livello più elevato nella gerarchia del modello di automazione. Un'applicazione di automazione deve disporre di un riferimento a questo oggetto per ottenere accesso al modello di automazione di base.

Tuttavia, l'aggiunta dell'assembly EnvDTE80 offre un oggetto di primo livello sostitutivo denominato DTE2 che sostituisce l'oggetto DTE. Sebbene entrambi gli oggetti agiscano—e vengano programmati—in modo simile, DTE2 contiene nuove funzionalità e ospita una serie di oggetti e raccolte nuove e aggiornate.

Quando si creano nuove applicazioni di automazione, si consiglia di creare riferimenti sia agli oggetti—al DTE2 per fornire l'accesso a nuove funzionalità e all'oggetto DTE per fornire l'accesso al resto della funzionalità principale. È inoltre consigliabile laddove possibile utilizzare i nuovi oggetti e raccolte in DTE2 anziché quelle in DTE.

Di seguito viene illustrato come ottenere un riferimento all'oggetto DTE2. (La stessa routine si applica all'oggetto DTE.) Prima di aggiungere un riferimento ad un oggetto, è necessario aggiungere riferimenti all'assembly appropriato e alla libreria di tipo. Per ulteriori informazioni, vedere Procedura: aggiungere riferimenti agli spazi dei nomi di automazione.

L'identificatore a livello di codice (ProgID) da utilizzare per Visual Studio 2013 è VisualStudio.DTE.12.0. È quindi possibile eseguire il cast dell'oggetto restituito in un'interfaccia DTE2.

Le proprietà, i metodi e gli eventi dell'oggetto DTE2, quando vengono chiamati, restituiscono i tipi DTE. Ad esempio, la proprietà Solution restituisce un oggetto Solution e non un oggetto Solution2 come ci si potrebbe aspettare. Questo perché, quando si utilizzano i membri DTE2 o altri membri di tipo, è necessario eseguire su di essi un cast di tipo in modo esplicito. Questa progettazione migliora la coerenza e riduce la confusione. L'assembly EnvDTE80.dll restituisce in modo coerente la stessa interfaccia per tutte le proprietà di DTE2. Restituire l'ultima versione dell'interfaccia potrebbe essere confusionario—ad esempio, se in una versione futura di Visual Studio si disponesse di un tipo DTE3, alcune interfacce potrebbero restituire DTE, alcune DTE2 ed altre ancora DTE3. Potrebbero inoltre sorgere problemi di interoperabilità COM poiché le interfacce "2" in EnvDTE80 derivano dalle interfacce EnvDTE. Per esempio Window2 deriva da Window; se si aggiungesse una proprietà DTE a Window2, nasconderebbe la proprietà Windows e non funzionerebbe correttamente con le applicazioni COM.

Nota

Il computer potrebbe mostrare nomi o percorsi diversi per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti.Questi elementi sono determinati dall'edizione di Visual Studio in uso e dalle impostazioni utilizzate.Per ulteriori informazioni, vedere Personalizzazione delle impostazioni di sviluppo in Visual Studio.

Per aggiungere un riferimento all'oggetto DTE2 in Visual Basic e C#

  • Nel codice, aggiungere il seguente:

    ' Get an instance of the currently running Visual Studio IDE.
    Dim DTE2 as EnvDTE80.DTE2
    DTE2 = System.Runtime.InteropServices.Marshal. _
    GetActiveObject("VisualStudio.DTE.12.0")
    
    // Get an instance of the currently running Visual Studio IDE.
    EnvDTE80.DTE2 dte2;
    dte2 = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.
    GetActiveObject("VisualStudio.DTE.12.0");
    

Per aggiungere un riferimento all'oggetto DTE o DTE2 in Visual C++ (ATL)

  • Nel codice, aggiungere il seguente:

    CComPtr<EnvDTE::_DTE> m_pDTE;
    CComPtr<EnvDTE80::DTE2> m_pDTE2;
    CLSID clsid;
    CLSID clsid2;
    CLSIDFromProgID(L"VisualStudio.DTE.12.0",&clsid);
    CLSIDFromProgID(L"VisualStudio.DTE.12.0",&clsid2);
    CComPtr<IUnknown> punk;
    CComPtr<IUnknown> punk2;
    // Get a running instance of Visual Studio.
    HRESULT hr = GetActiveObject(clsid,NULL,&punk);
    hr = GetActiveObject(clsid2,NULL,&punk2);
    m_pDTE = punk;
    m_pDTE2 = punk2;
    

Vedere anche

Attività

Procedura: aggiungere riferimenti agli spazi dei nomi di automazione

Procedura: controllare i componenti aggiuntivi tramite Gestione componenti aggiuntivi

Concetti

Collegamento a istanze specifiche dell'IDE

Registrazione di un componente aggiuntivo

Grafico del modello a oggetti di automazione

Altre risorse

Creazione di componenti aggiuntivi e di procedure guidate