Visão geral das opções de configuração
Os projetos podem fornecer suporte a múltiplas configurações no Visual Studio que podem ser desenvolvidas, depuradas, executadas ou implantadas. Uma configuração é um tipo de build descrito com um conjunto nomeado de propriedades, que, normalmente, correspondem a opções de compilador e localizações de arquivo. Por padrão, as novas soluções contêm duas configurações, Depurar e Liberar. Essas configurações podem ser aplicadas usando as configurações padrão ou modificadas para atender aos requisitos específicos da solução ou do projeto. Alguns pacotes podem ser compilados de duas maneiras: como um editor do ActiveX ou como um componente in-loco. No entanto, os projetos não precisam oferecer suporte para múltiplas configurações. Se houver somente uma configuração disponível, essa configuração será mapeada em todas as configurações da solução.
Geralmente, as configurações consistem em duas partes: o nome da configuração (como Depurar ou Liberar) e as configurações da plataforma. O nome da plataforma de uma configuração identifica o ambiente ao qual a configuração se destina, como um conjunto de APIs ou uma plataforma de sistema operacional. Os usuários do Visual Studio não podem criar uma plataforma. Eles devem escolher entre as seleções que um projeto do VSPackage permite. Quando um usuário instala um VSPackage, a plataforma de entrega criada durante o desenvolvimento do pacote pode exibir qualquer nome de plataforma desejado com base em critérios definidos pelo criador do pacote. Em seguida, o usuário pode fazer a seleção na lista de plataformas disponibilizadas por meio do VSPackage quando as páginas de propriedades estão criando instâncias.
Os nomes das plataformas são opcionais, pois nem todos os projetos oferecem suporte ao conceito de plataformas. Quando uma configuração não possui um nome de plataforma, a sequência N/A é exibida na interface do usuário.
Cada solução tem o próprio conjunto de configurações, das quais somente uma pode estar ativa por vez. Uma configuração de solução corresponde a um conjunto de não mais que uma configuração de cada projeto. A estipulação “não mais que” se deve à opção de excluir um projeto de uma configuração de solução. Os usuários podem criar as próprias configurações de solução personalizadas.
A tabela apresentada a seguir ilustra as configurações típicas definidas para um projeto. As linhas são rotuladas com nomes de configuração e as colunas com nomes de plataforma.
Nome da configuração | Plataforma: Win32 | Plataforma: Win64 |
---|---|---|
Depurar | <Depurar configurações do Win32> | <Depurar configurações do Win64> |
Versão | <Liberar configurações do Win32> | <Liberar configurações do Win64> |
MyConfig | N/D | <MyConfig configurações do Win64> |
Observação
Não é possível criar uma configuração de solução MyConfig que exclua uma plataforma Win32, a menos que o projeto de direcionamento não ofereça suporte para Win32.
As alterações das configurações ativas para uma solução selecionam o conjunto de configurações de projeto que é desenvolvido, executado, depurado ou implantado nessa solução. Por exemplo, se você alterar a configuração da solução ativa de Liberar para Depurar, todos os projetos dessa solução serão criados automaticamente com a configuração dos projetos indicada na configuração de depuração da solução. As configurações dos projetos também são denominadas Depurar, a menos que o usuário tenha feito alterações manuais no Configuration Manager do ambiente.
As propriedades de configuração da solução armazenadas para cada projeto incluem o nome do projeto, o nome da configuração do projeto, os sinalizadores para indicar se deve, ou não, realizar a compilação ou a implantação, e o nome da plataforma. Para obter mais informações, confira Solution configuration.
O usuário pode realizar a exibição e definir parâmetros de configuração da solução ao selecionar a solução na hierarquia (Gerenciador de Soluções) e abrir as páginas de propriedades. De forma semelhante, é possível realizar a exibição e definir parâmetros de configuração do projeto ao selecionar um projeto no Gerenciador de Soluções e abrir as páginas de propriedades para esse projeto.
O usuário também pode realizar a compilação de um projeto ao usar as definições de configurações de liberação e todo o resto com as definições de configurações de depuração, se necessário. Para obter mais informações, confira Project configuration for building.
O diagrama apresentado a seguir mostra como as interfaces que oferecem suporte a configurações de soluções e de projetos são implantadas:
Interfaces de configuração
Algumas observações relacionadas ao diagrama anterior:
IDispatch
está marcado como opcional no objeto de configuração. Especificamente, é opcional ter as interfaces de configuração no objeto de navegação.IVsDebuggableProjectCfg
está marcado como opcional no objeto de configuração, mas é necessário para fornecer suporte à depuração.IVsProjectCfg2
está marcado como opcional no objeto de configuração, mas é necessário para fornecer suporte ao agrupamento de saída.O objeto Config Provider está marcado como um objeto opcional, mas a opção está relacionada com qual local implementá-lo. É possível implementar o objeto no objeto do projeto ou em um objeto separado.
IVsCfgProvider2
é necessário para fornecer suporte à plataforma e à edição da configuração.IVsCfgProvider
é suficiente se você não implementar essa funcionalidade.Alguns desses objetos mostrados no diagrama como objetos separados podem ser combinados na mesma classe, quando for prático, com base em seus requisitos específicos de design. Em outros tópicos desta seção, entretanto, os objetos e as interfaces associados a esses objetos serão discutidos de acordo com o cenário apresentado no diagrama.
Determinados objetos são implantados separadamente. Por exemplo, o desenvolvimento do projeto e da solução ocorre em threads separados e o objeto para gerenciar a compilação existe separadamente do objeto que descreve a configuração para a compilação.
Para obter mais informações sobre as interfaces do objeto de configuração e as interfaces do objeto do provedor de configuração no diagrama anterior, confira Project configuration object. Além disso, a página Project configuration for building fornece mais informações sobre o construtor de configuração e sobre as interfaces de objetos de dependência de build, e a página Project configuration for managing deployment descreve com mais detalhes as interfaces conectadas ao implantador de configuração e aos objetos de dependência de implantação. Por fim, Project configuration for output descreve as interfaces do grupo de saída e do objeto de saída e o uso de páginas de propriedades para realizar a exibição e definir propriedades dependentes da configuração.