Partilhar via


Manter os dados no arquivo de projeto MSBuild

Um subtipo de projeto, talvez seja necessário persistir dados específicos do subtipo no arquivo de projeto para uso posterior. Um subtipo de projeto usa a persistência do arquivo de projeto para atender aos seguintes requisitos:

  1. Manter os dados usados como parte da construção do projeto. (Para obter mais informações sobre o Microsoft Build Engine, consulte MSBuild.) Informações relacionadas a compilação podem:

    1. Dados de configuração independente. Ou seja, os dados armazenados nos elementos MSBuild com condições em branco ou ausentes.

    2. Dados de configuração dependente. Ou seja, os dados armazenados nos elementos de MSBuild que são condicionados para uma configuração de projeto específico. Por exemplo:

      <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
      
  2. Manter os dados que não não relevantes para construir. Esses dados podem ser expressas em XML de forma livre que não é validado contra um esquema XML.

    1. Dados de configuração independente.

    2. Dados de configuração dependente.

Informações relacionadas a compilação de persistência

Persistência de dados úteis para a criação de um projeto é tratada pelo MSBuild. O sistema de MSBuild mantém uma tabela mestre de informações relacionadas a compilação. Os subtipos de projeto são responsáveis pelo acesso a esses dados para obter e definir valores de propriedade. Subtipos do projeto também podem aumentar a tabela de dados relacionados à compilação adicionando propriedades adicionais a serem conservados e removendo propriedades para que eles não são persistentes.

Para modificar os dados do MSBuild, um subtipo de projeto é responsável por recuperar o objeto de propriedade do MSBuild do sistema por meio do projeto base IVsBuildPropertyStorage. IVsBuildPropertyStorageé uma interface implementada no sistema de projeto de núcleo e as consultas de subtipo agregação do projeto para ele executando QueryInterface.

O procedimento a seguir descreve as etapas para remover uma propriedade usando IVsBuildPropertyStorage.

Para remover uma propriedade de um arquivo de projeto MSBuild

  1. Chame QueryInterface na IVsBuildPropertyStorage o subtipo de projeto.

  2. Chame RemoveProperty com pszPropName definida como a propriedade que você deseja remover.

Informações relacionadas a compilação não persistente

Persistência de dados em arquivos de projeto que não importa para construir é tratada por meio de IPersistXMLFragment.

Você pode implementar IPersistXMLFragment no principal project subtype aggregator o objeto, o project subtype project configuration ou ambos.

Os pontos a seguir descrevem os principais conceitos sobre a persistência de não-compilação de informações relacionada.

  • O projeto base chama no objeto projeto principal (ou seja, o subtipo de projeto mais externa) do subtipo agregador para carregar e salvar dados de configuração independente e ele chama os objetos de configuração de projeto de subtipo do projeto para carregar ou salvar dados de configuração dependente.

  • O projeto base chama os métodos de IPersistXMLFragment várias vezes para cada nível de agregação de subtipo de projeto e passa o GUID para cada nível.

  • O projeto base passa ou recebe um fragmento XML que é dedicado a um subtipo de projeto específico e usa esse mecanismo como uma forma de persistência de estado entre os níveis de agregação.

  • O projeto base chama o subtipo de projeto mais externo IPersistXMLFragmentimplementação passando um GUID. Se o GUID pertence para o subtipo de projeto mais externo, ele lida com a chamada propriamente dito; Caso contrário, ele delega a chamada para um subtipo de projeto interno e assim por diante, até encontra o subtipo de projeto que o GUID corresponde ao.

  • Um subtipo de projeto também pode modificar o fragmento XML antes ou depois de ele delega a chamada para um subtipo de projeto interno. O exemplo a seguir mostra um trecho de um arquivo de projeto, onde um nome de um arquivo que contém propriedades específicas a um subtipo de projeto, é passado para esse subtipo de projeto.

    <ProjectExtensions>
        <VisualStudio>
          <FlavorProperties GUID="{<FlavorGUID>}">
            <FlavorProject TestFileFolder="TestFile" />
          </FlavorProperties>
        </VisualStudio>
      </ProjectExtensions>
    

Consulte também

Outros recursos

Subtipos de projeto