Partilhar via


Como: Obter referências para os objetos DTE2 e DTE

No EnvDTE assembly, o DTE objeto representa a Visual Studio integrado ao ambiente de desenvolvimento (IDE) e é o objeto de nível mais alto na hierarquia do modelo de automação. Todos os aplicativos de automação devem ter uma referência a este objeto para acessar o modelo de núcleo de automação.Que continua a ser o caso com Visual Studio 2005.

Mas a adição do EnvDTE80 assembly fornece um objeto de substituição de nível superior chamado DTE2 que substitui o DTE objeto. Os objetos agir e programar de forma semelhante, mas DTE2 contém a nova funcionalidade e hospeda um número de novos e atualizados objetos e coleções.

sistema autônomo resultado, ao criar novos aplicativos de automação e add-ins, você deve criar referências para sistema autônomo dois objetos.O novo DTE2 objeto fornece acesso para a nova funcionalidade, enquanto o DTE objeto fornece acesso para o restante da funcionalidade de automação principais. Novos objetos e coleções em DTE2 deve ser usado em vez de objetos e coleções na DTE sempre que possível.

Os procedimentos a seguir mostram como obter uma referência para o DTE2 objeto. (O mesmo procedimento se aplica à DTE objeto). Antes de adicionar referências aos objetos, você deve adicionar referências a assemblies apropriados e biblioteca de tipos.Para obter mais informações, consulte Como: Adicionar referências ao EnvDTE, EnvDTE80 e EnvDTE90 Namespaces.

O identificador programático (ProgID) para usar é VisualStudio.DTE.8.0.Em seguida, você pode usar o objeto retornado em um DTE2 interface.

The DTE2 Propriedades, métodos e eventos, quando chamado, retornam o DTE tipos. Por exemplo, Solution Retorna um Solution objeto, não um Solution2 sistema autônomo você pode esperar do objeto. Isso é por isso, ao usar o DTE2 membros ou outros membros de tipo, você deve explicitamente typecast-los. Isso foi concluído intencionalmente por vários motivos.O primeiro motivo é elevar a consistência e reduzir a confusão.The EnvDTE80 assembly retorna consistentemente a mesma interface para todos os DTE2 Propriedades. Retornando a versão mais recente da interface seria confuso.Por exemplo, se uma versão futura do Visual Studio tem um tipo DTE3, e em seguida, poderiam retornar algumas interfaces DTE, alguns DTE2e alguns DTE3. Além disso, ele poderia representar problemas de interoperabilidade COM porque as interfaces "2"EnvDTE80 derivar o EnvDTE interfaces. Por exemplo, Window2 deriva da Window. If a DTE propriedade foram adicionados ao Window2, e, em seguida, ele ocultaria o Windows propriedade e pode não funcionar corretamente com aplicativos COM.

Observação:

Caixas de diálogo e comandos de menu que você vê podem diferir esses des crita na Ajuda dependendo das configurações ativas ou edição.Esses procedimentos foram desenvolvidos com o Geral Development Settings ativo.Para alterar as configurações, escolher Import and ExportSettings on the Tools menu.Para obter mais informações, consulte Configurações do Visual Studio.

Para fazer referência ao objeto DTE2 no Visual Basic

  • No seu código, adicione o seguinte:

    ' Create a new instance of Visual Studio.
    Dim DTE2 As Object
    DTE2 = Microsoft.VisualBasic.Interaction.CreateObject _
    ("VisualStudio.DTE.8.0")
    

    - ou -

    ' Get an instance of the currently running Visual Studio IDE.
    Dim DTE2 as EnvDTE80.DTE2
    DTE2 = System.Runtime.InteropServices.Marshal. _
    GetActiveObject("VisualStudio.DTE2")
    
  • Para fazer referência ao objeto de IDE de macros, no seu código, adicione o seguinte:

    ' Get an instance of the currently running Macros IDE.
    Dim DTE2 as EnvDTE80.DTE2
    Dim MacrosDTE2 as EnvDTE80.DTE2
    DTE2 = System.Runtime.InteropServices.Marshal.GetActiveObject_
    ("VisualStudio.DTE2")
    MacrosDTE2 = DTE2.MacrosIDE
    

Para fazer referência ao objeto DTE2 em translation from VPE for Csharp Visual

  • No seu código, adicione o seguinte:

    // Create a new instance of Visual Studio.
    EnvDTE80.DTE2 myDTE2;
    myDTE2 = (EnvDTE80.DTE2)Microsoft.VisualBasic.Interaction.
    CreateObject("VisualStudio.DTE.8.0", "");
    

    - ou -

    // Get an instance of the currently running Visual Studio IDE.
    EnvDTE80.DTE2 dte2;
    dte2 = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.
    GetActiveObject("VisualStudio.DTE.8.0");
    
  • Para fazer referência ao objeto de IDE de macros, no seu código, adicione o seguinte:

    // Get an instance of the currently running Macros IDE.
    EnvDTE80.DTE2 dte2;
    EnvDTE80.DTE2 MacrosDTE2;
    dte2 = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.
    GetActiveObject("VisualStudio.DTE.8.0");
    MacrosDTE2 = dte2.MacrosIDE;
    

Para fazer referência ao objeto DTE ou DTE2 no Visual C++ (ATL)

  • No seu código, digite o seguinte:

    CComPtr<EnvDTE::_DTE> m_pDTE;
    CComPtr<EnvDTE80::_DTE2> m_pDTE2;
    // The 7.1 reference works only if you have Visual Studio .NET 2003 // installed.
    HRESULT hr = m_pDTE.CoCreateInstance("VisualStudio.DTE.7.1", 0, 
    CLSCTX_ALL); // Create a new instance of Visual Studio 
    HRESULT hr2 = m_pDTE2.CoCreateInstance("VisualStudio.DTE.8.0", 0, 
    CLSCTX_ALL); // Create a new instance of Visual Studio.
    

    - ou -

    CComPtr<EnvDTE::_DTE> m_pDTE;
    CComPtr<EnvDTE80::_DTE2> m_pDTE2;
    CLSID clsid;
    CLSID clsid2;
    // The 7.1 reference works only if you have Visual Studio .NET 2003 // installed.
    CLSIDFromProgID(L"VisualStudio.DTE.7.1",&clsid);
    CLSIDFromProgID(L"VisualStudio.DTE.8.0",&clsid2);
    CComPtr<IUnknown> punk;
    CComPtr<IUnknown> punk2;
    // Get a running instance of Visual Studio.
    // The clsid reference works only if you have Visual Studio .NET 
    // 2003 installed.
    HRESULT hr = GetActiveObject(clsid,NULL,&punk);
    HRESULT hr = GetActiveObject(clsid2,NULL,&punk2);
    m_pDTE = punk;
    m_pDTE2 = punk2;
    
  • Para fazer referência ao objeto de IDE de macros, no seu código, adicione o seguinte:

    // Get an instance of the currently runnig Macros IDE.
    CComPtr<EnvDTE80::_DTE2> m_pDTE2;
    CComPtr<EnvDTE80::_DTE2> m_pMacrosIDE;
    CLSID clsid;
    CLSIDFromProgID(L"VisualStudio.DTE.8.0",&clsid);
    CComPtr<IUnknown> punk;
    HRESULT hr = GetActiveObject(clsid,NULL,&punk);
    m_pDTE = punk;
    m_pDTE->get_MacrosIDE((void **)&m_pMacrosIDE);
    

Consulte também

Tarefas

Como: Adicionar referências ao EnvDTE, EnvDTE80 e EnvDTE90 Namespaces

Como: Add-ins de controle com o Gerenciador de suplemento

Conceitos

Anexando a instâncias específicas do IDE

inscrição do suplemento

Gráfico do modelo de objetos de automação

Outros recursos

Criando suplementos e assistentes