Compartilhar via


Identificar símbolos em uma biblioteca

As ferramentas de navegação de símbolos exibem exibições hierárquicas de símbolos. Os símbolos representam namespaces, objetos, classes, membros de classe e outros elementos de linguagem.

Cada símbolo na hierarquia pode ser identificado pelas informações de navegação passadas pela biblioteca de símbolos para o gerenciador de objetos do Visual Studio por meio das seguintes interfaces:

A localização do símbolo na hierarquia distingue um símbolo. Ele permite que as ferramentas de navegação de símbolos naveguem até um símbolo específico. O caminho exclusivo e totalmente qualificado para o símbolo determina o local. Cada elemento no caminho é um nó. O caminho começa com o nó de nível superior e termina com o símbolo específico. Por exemplo, se o método M1 for um membro da classe C1 e C1 estiver no namespace N1, o caminho completo do método M1 será N1. C1º. M1. Esse caminho contém três nós: N1, C1 e M1.

As informações de navegação permitem que o gerenciador de objetos do Visual Studio localize, selecione e mantenha selecionados os símbolos na hierarquia. Permite navegar de uma ferramenta de navegação para outra. Ao usar o Pesquisador de objetos para procurar símbolos em um projeto do Visual C++, você pode clicar com o botão direito do mouse em um método e iniciar a ferramenta Navegador de chamadas para exibir o método em um gráfico de chamadas.

Duas formas descrevem a localização do símbolo. A forma canônica é baseada no caminho totalmente qualificado do símbolo. Ele representa uma posição única do símbolo na hierarquia. É independente da ferramenta de navegação de símbolos. Para obter as informações de formulário canônico, o gerenciador de objetos do Visual Studio chama EnumCanonicalNodes método. O formulário de apresentação descreve o local do símbolo dentro de uma ferramenta de navegação de símbolos específica. A posição do símbolo é relativa à posição de outros símbolos na hierarquia. Um determinado símbolo pode ter vários caminhos de apresentação, mas apenas um caminho canônico. Por exemplo, se a classe C1 for herdada da classe C2 e ambas as classes estiverem no namespace N1, o Pesquisador de Objetos exibirá a seguinte árvore hierárquica:

N1
    C1
        Bases and Interfaces
            C2
    C2
        Bases and Interfaces
. . . . . . . . . . .

O caminho canônico da classe C2, neste exemplo, é N1 + C2. O caminho de apresentação do C2 inclui os nós C1 e "Bases e Interfaces": N1 + C1 + "Bases e Interfaces" + C2.

Para obter as informações do formulário de apresentação, o gerenciador de objetos chama EnumPresentationNodes o método.

Para obter informações canônicas e de formulários de apresentação

  1. Implementar o método de EnumCanonicalNodes .

    O gerenciador de objetos chama esse método para obter a lista de nós contidos no caminho canônico do símbolo.

    public int EnumCanonicalNodes(out Microsoft.VisualStudio.Shell.Interop.IVsEnumNavInfoNodes ppEnum)
    {
        CallBrowserEnumNavInfoNodes EnumNavInfoNodes =
            new CallBrowserEnumNavInfoNodes(m_strMethod);
        ppEnum = (IVsEnumNavInfoNodes)(EnumNavInfoNodes);
        return 0;
    }
    
    
  2. Implementar o método de EnumPresentationNodes .

    O gerenciador de objetos chama esse método para obter a lista de nós contidos no caminho de apresentação do símbolo.