Compartilhar via


Modelagem do projeto

A próxima etapa no fornecimento de automação para seu projeto é implementar os objetos de projeto padrão: as Projects coleções and ProjectItems ; os Project objetos and ProjectItem ; e os objetos restantes exclusivos para sua implementação. Esses objetos padrão são definidos no arquivo Dteinternal.h. Uma implementação dos objetos padrão é fornecida no exemplo BscPrj. Você pode usar essas classes como modelos para criar seus próprios objetos de projeto padrão que ficam lado a lado com objetos de projeto de outros tipos de projeto.

Um consumidor de automação presume ser capaz de chamar Solution("<UniqueProjName>") e ProjectItems (n) em que n é um número de índice para obter um projeto específico na solução. Fazer essa chamada de automação faz com que o ambiente chame GetProperty a hierarquia de projeto apropriada, passando VSITEMID_ROOT como o parâmetro ItemID e VSHPROPID_ExtObject como parâmetro VSHPROPID. IVsHierarchy::GetProperty Retorna um IDispatch ponteiro para o objeto de automação que fornece a interface principal Project , que você implementou.

Veja a seguir a sintaxe de IVsHierarchy::GetProperty.

HRESULT GetProperty (

VSITEMIDitemid,

VSHPROPIDpropid,

VARIANT *pvar

);

Os projetos acomodam aninhamento e usam coleções para criar grupos de itens de projeto. A hierarquia é assim.

Projects
  |- Project
      |- ProjectItems (a collection of ProjectItem)
          |- ProjectItem (single object) or ProjectItems (another collection)

Aninhamento significa que um ProjectItem objeto pode ser ProjectItems uma coleção ao mesmo tempo porque uma ProjectItems coleção pode conter os objetos aninhados. O exemplo do Projeto Básico não demonstra esse aninhamento. Ao implementar o Project objeto, você participa da estrutura semelhante a uma árvore que caracteriza o design do modelo de automação geral.

A automação do projeto segue o caminho no diagrama a seguir.

Objetos de projeto do Visual Studio

Automação de projetos

Se você não implementar um Project objeto, o ambiente ainda retornará um objeto genérico Project que contém apenas o nome do projeto.

Confira também