Compartilhar via


Elementos de um modelo de projeto

As interfaces e as implementações de todos os projetos no Visual Studio compartilham uma estrutura básica: o modelo de projeto para o tipo de projeto. No modelo de projeto, que é o VSPackage que você está desenvolvendo, você cria objetos que estão em conformidade com suas decisões de design e funcionam em conjunto com a funcionalidade global fornecida pelo IDE. Embora você controle como um item de projeto é retido, por exemplo, não é possível controlar as notificações de que um arquivo deve ser retido. Quando um usuário estabelece o foco em um item de projeto aberto e escolhe Salvar no menu Arquivo na barra de menus do Visual Studio, o código do tipo de projeto deve interceptar o comando do IDE, reter o arquivo e enviar uma notificação de volta ao IDE de que o arquivo não sofrerá mais alterações.

O VSPackage interage com o IDE por meio de serviços que fornecem acesso às interfaces do IDE. Por exemplo, por meio de serviços específicos, é possível monitorar e encaminhar comandos e fornecer informações de contexto para seleções feitas no projeto. Toda a funcionalidade do IDE global que é necessária para o VSPackage é fornecida por serviços. Para obter mais informações sobre os serviços, confira How to: Get a service.

Outras considerações de implementação:

  • Um único modelo de projeto pode conter mais de um tipo de projeto.

  • Os tipos de projeto e os alocadores de projeto correspondentes são registrados de forma independente nos GUIDs.

  • Cada projeto deve ter um arquivo de modelo ou um assistente para inicializar o novo arquivo de projeto quando um usuário cria um novo projeto por meio da interface do usuário do Visual Studio. Por exemplo, os modelos do Visual C++ inicializam o que, consequentemente, se tornarão arquivos .vcproj.

    A ilustração apresentada a seguir mostra as principais interfaces, serviços e objetos que compõem uma implementação típica de projeto. É possível usar o auxiliar de aplicativo, HierUtil7, para criar os objetos subjacentes e outros padrões de programação. Para obter mais informações sobre o auxiliar de aplicativo HierUtil7, confira Use HierUtil7 project classes to implement a project type (C++).

    Gráfico do modelo de projeto do Visual Studio

    Modelo de projeto

    Para obter mais informações sobre as interfaces e os serviços listados no diagrama anterior e outras interfaces opcionais não inclusas no diagrama, confira Project model core components.

    Os projetos podem fornecer suporte a comandos e, portanto, devem implementar a interface IOleCommandTarget para participar do encaminhamento de comandos por meio dos GUIDs de contexto de comando.