Elementos de um modelo de projeto
As interfaces e implementações de todos os projetos no Visual Studio compartilham uma estrutura básica: o modelo de projeto para seu tipo de projeto. Em seu 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 trabalham em conjunto com a funcionalidade global fornecida pelo IDE. Embora você controle como um item de projeto é persistente, por exemplo, você não controla a notificação de que um arquivo deve ser persistido. Quando um usuário coloca o foco em um item de projeto aberto e escolhe Salvar no menu Arquivo na barra de menus do Visual Studio, seu código de tipo de projeto deve interceptar o comando do IDE, persistir o arquivo e enviar notificação de volta ao IDE de que o arquivo não é mais alterado.
Seu 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, você monitora e roteia comandos e fornece informações de contexto para seleções feitas no projeto. Toda a funcionalidade IDE global necessária para o seu VSPackage é fornecida pelos serviços. Para obter mais informações sobre serviços, consulte Como: Obter um serviço.
Outras considerações de implementação:
Um único modelo de projeto pode conter mais de um tipo de projeto.
Os tipos de projeto e as fábricas de projeto atendentes são registrados independentemente com GUIDs.
Cada projeto deve ter um arquivo de modelo ou 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 eventualmente se tornam arquivos .vcproj.
A ilustração a seguir mostra as principais interfaces, serviços e objetos que compõem uma implementação de projeto típica. Você pode usar o auxiliar do aplicativo, ,
HierUtil7
para criar os objetos subjacentes e outros boilerplate de programação. Para obter mais informações sobre o auxiliar deHierUtil7
aplicativo, consulte Usar classes de projeto HierUtil7 para implementar um tipo de projeto (C++).Modelo de projeto
Para obter mais informações sobre as interfaces e serviços listados no diagrama anterior e outras interfaces opcionais não incluídas no diagrama, consulte Componentes principais do modelo de projeto.
Os projetos podem oferecer suporte a comandos e, portanto, devem implementar a IOleCommandTarget interface para participar do roteamento de comandos por meio dos GUIDs de contexto de comando.