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
Gráfico do modelo de objetos de automação