Sdílet prostřednictvím


Postupy: Získávání odkazů na objekty DTE a DTE2

[!POZNÁMKA]

Ve verzi Visual Studio 2013 jsou zastaralé doplňky.Doporučujeme upgradovat doplňky na rozšíření VSPackage.Další informace naleznete v tématu Nejčastější dotazy: Převádění doplňků na rozšíření VSPackage.

V EnvDTE sestavení, DTE objekt představuje Visual Studio integrované vývojové prostředí (IDE) a je objekt nejvyšší úrovně v hierarchii modelu automatizace.Chcete-li získat přístup k základní model automatizace, automatizace aplikace musí mít odkaz na tento objekt.

Avšak přídavek EnvDTE80 sestavení poskytuje objekt nejvyšší úrovně náhradu, která se nazývá DTE2 a nahrazuje DTE objektu.Ačkoli oba objekty pracovat – a jsou programovány – podobně, DTE2 obsahuje nové funkce a hostitelem nových a aktualizovaných objektů a kolekcí.

Při vytváření nové aplikace automatizace, doporučujeme vytvořit odkazy na oba objekty – na DTE2 objekt, který chcete poskytnout přístup, nové funkce a DTE objekt, který chcete poskytnout přístup do ostatních základních funkcí.Doporučujeme také možno použít nové objekty a kolekce v DTE2 místo v DTE.

Následující kroky ukazují, jak získat odkaz na DTE2 objektu. (Stejný postup platí pro objekt DTE.) Chcete-li přidat odkaz na objekt, je nutné přidat odkazy na odpovídající sestavení a typu knihovny.Další informace naleznete v tématu Postupy: Přidávání odkazů do oborů názvů automatizace.

Programový identifikátor (ProgID), který se má použít pro aplikaci Visual Studio 2013, je VisualStudio.DTE.12.0.Potom můžete přetypovat vrácený objekt na rozhraní DTE2.

Když jsou volány, DTE2 vlastnosti, metody a události návrat DTE typy.Například Solution vrátí Solution objekt, ne Solution2 objekt může očekávat jednu.To je důvod, proč, když použijete DTE2 přiřazení členy nebo jinými členy typu, je nutné explicitně typu je.Tento návrh podporuje soudržnost a zjednodušuje.Sestavení EnvDTE80.dll konzistentně vrací stejné rozhraní pro všechny vlastnosti DTE2.Vrací nejnovější verzi rozhraní se – například pokud budoucí verze Visual Studio byly na DTE3 typu, pak může vrátit některá rozhraní DTE, některé DTE2a některé DTE3.Kromě toho ji může vytvořit COM interop problémy, protože rozhraní "2" v EnvDTE80 jsou odvozeny z EnvDTE rozhraní.Například Window2 je odvozen od Window; Pokud DTE vlastnosti byly přidány do Window2, by skrýt Windows vlastnost a nebudou pracovat správně s aplikací modelu COM.

[!POZNÁMKA]

Váš počítač může zobrazit jiné názvy nebo umístění pro některé prvky uživatelského rozhraní sady Visual Studio v následujících pokynech.Tyto prvky jsou určeny verzí aplikace Visual Studio a použitým nastavením.Další informace naleznete v tématu Přizpůsobení nastavení pro vývoj v sadě Visual Studio.

Odkazování na objekt DTE2 v aplikaci Visual Basic a C#

  • V kódu přidáte:

    ' 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");
    

Odkazování na objekt DTE nebo DTE2 v aplikaci Visual C++ (ATL)

  • V kódu přidáte:

    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;
    

Viz také

Úkoly

Postupy: Přidávání odkazů do oborů názvů automatizace

Postupy: Řízení doplňků pomocí Správce doplňků

Koncepty

Připojování ke konkrétním instancím prostředí IDE

Registrace doplňku

Graf modelu objektů automatizace

Další zdroje

Vytváření doplňků a průvodců