Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
No Visual Studio, os comandos são manipulados por vários componentes diferentes. Os comandos são roteados do contexto mais interno, que se baseia na seleção atual, para o contexto externo (também conhecido como global). Para obter mais informações, consulte Disponibilidade de comandos.
Ordem de resolução de comandos
Os comandos são passados pelos seguintes níveis de contexto de comando:
Suplementos: O ambiente oferece primeiro o comando a quaisquer suplementos presentes.
Comandos de prioridade: esses comandos são registrados usando IVsRegisterPriorityCommandTarget. Eles são chamados para cada comando no Visual Studio e são chamados na ordem em que foram registrados.
Comandos do menu de contexto: um comando localizado em um menu de contexto é oferecido primeiro ao destino do comando fornecido ao menu de contexto e, em seguida, ao roteamento típico.
Definir alvos de comando da barra de ferramentas: estes alvos de comando são registados quando se chama SetupToolbar2. O
pCmdTargetparâmetro pode sernull. Se não fornull, então este alvo de comando é usado para atualizar quaisquer comandos localizados na barra de ferramentas que o utilizador está a configurar. Se o shell estiver configurando sua barra de ferramentas, ele passará o quadro da janela como opCmdTargetpara que todas as atualizações dos comandos na barra de ferramentas fluam através do quadro da janela, mesmo quando ele não está em foco.Janela de ferramentas: As janelas de ferramentas, que normalmente implementam a interface IVsWindowPane, também devem implementar a interface IOleCommandTarget, para que o Visual Studio possa obter o destino do comando quando a janela de ferramentas for a ativa. No entanto, se a janela de ferramenta que tem foco é a janela Projeto , o comando é roteado para a IVsUIHierarchy interface que é o pai comum dos itens selecionados. Se essa seleção abranger vários projetos, o comando será roteado para a IVsSolution hierarquia. A interface IVsUIHierarchy contém os métodos QueryStatusCommand e ExecCommand, que são análogos aos comandos correspondentes na interface IOleCommandTarget.
Janela do Documento: Se o comando tiver o
RouteToDocssinalizador definido no seu arquivo .vsct, o Visual Studio procurará um destino de comando no objeto de visualização de documento, que é uma instância de interface ou uma instância de um objeto de documento, normalmente uma interface IVsTextLines ou uma interface IVsTextBuffer. Se o objeto de exibição de documento não oferecer suporte ao comando, o Visual Studio roteia o comando para a IOleCommandTarget interface retornada. (Esta é uma interface opcional para objetos de dados de documentos.)Hierarquia atual: A hierarquia atual pode ser o projeto proprietário da janela de documento ativa ou a hierarquia selecionada no Gerenciador de Soluções. O Visual Studio procura a IOleCommandTarget interface implementada na hierarquia atual ou ativa. A hierarquia deve suportar comandos que são válidos sempre que a hierarquia está ativa, mesmo que esteja focada em uma janela de documento de um item de projeto. No entanto, os comandos que se aplicam somente quando o Explorador de Soluções tem foco devem ser suportados usando a interface IVsUIHierarchy e seus métodos QueryStatusCommand e ExecCommand.
Os comandos Recortar, Copiar, Colar, Excluir, Renomear, Enter e DoubleClick requerem tratamento especial. Para obter informações sobre como lidar com comandos Excluir e Remover em hierarquias, consulte a IVsHierarchyDeleteHandler interface.
Global: Se um comando não tiver sido manipulado pelos contextos mencionados anteriormente, o Visual Studio tentará roteá-lo para o VSPackage que possui um comando que implementa a IOleCommandTarget interface. Se o VSPackage ainda não foi carregado, ele não é carregado quando o Visual Studio chama o QueryStatus método. O VSPackage é carregado somente quando o Exec método é chamado.