Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Um subtipo de projeto pode precisar persistir dados específicos do subtipo no arquivo de projeto para uso posterior. Um subtipo de projeto usa persistência de arquivo de projeto para atender aos seguintes requisitos:
Persista os dados usados como parte da criação do projeto. (Para obter mais informações sobre o Microsoft Build Engine, consulte MSBuild.) As informações relacionadas ao build podem:
Dados independentes de configuração. Ou seja, dados armazenados em elementos MSBuild com condições em branco ou ausentes.
Dados dependentes de configuração. Ou seja, dados armazenados em elementos MSBuild que são condicionados para uma configuração de projeto específica. Por exemplo:
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
Persista dados que não são relevantes ao build. Esses dados podem ser expressos em XML de forma livre que não é validado em um esquema XML.
Dados independentes de configuração.
Dados dependentes de configuração.
Informações persistentes relacionadas ao Build
A persistência de dados úteis para a criação de um projeto é tratada por meio do MSBuild. O sistema MSBuild mantém uma tabela mestra de informações relacionadas ao build. Os subtipos de projeto são responsáveis por acessar esses dados para obter e definir valores de propriedade. Os subtipos do projeto também podem aumentar a tabela de dados relacionada à compilação adicionando propriedades adicionais a serem mantidas e removendo propriedades para que não sejam mantidas.
Para modificar os dados do MSBuild, um subtipo de projeto é responsável por recuperar o objeto de propriedade MSBuild do sistema de projeto base por meio de IVsBuildPropertyStorage.
IVsBuildPropertyStorage é uma interface implementada no sistema de projeto de núcleo, e o subtipo de projeto de agregação faz consultas a ela executando QueryInterface.
O procedimento a seguir descreve as etapas para remover uma propriedade usando IVsBuildPropertyStorage.
Para remover uma propriedade de um arquivo de projeto do MSBuild
Chame
QueryInterfaceem IVsBuildPropertyStorage do subtipo do projeto.Utilize RemoveProperty com
pszPropNameconfigurado na propriedade que deseja remover.
Persistindo informações não relacionadas à compilação
A persistência de dados em arquivos de projeto que não são importantes para a compilação é tratada por meio de IPersistXMLFragment.
Você pode implementar IPersistXMLFragment no objeto principal project subtype aggregator , no project subtype project configuration objeto ou em ambos.
Os pontos a seguir descrevem os principais conceitos sobre a persistência de informações não relacionadas a build.
O projeto base chama o objeto agregador do subtipo do projeto principal (ou seja, o subtipo de projeto mais externo) para salvar e carregar dados independentes de configuração e chama os objetos de configuração do subtipo de projeto para salvar ou carregar dados dependentes da configuração.
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 dedicado a um subtipo de projeto específico e usa esse mecanismo como uma forma de manter o estado entre os níveis de agregação.
O projeto base chama a implementação do subtipo de IPersistXMLFragmentprojeto mais externo passando um GUID. Se o GUID pertencer ao subtipo de projeto mais externo, ele manipulará a chamada em si; caso contrário, ele delega a chamada a um subtipo de projeto interno e assim por diante, até que o subtipo do projeto ao qual o GUID corresponde seja encontrado.
Um subtipo de projeto também pode modificar o fragmento XML antes ou depois de delegar a chamada a um subtipo de projeto interno. O exemplo a seguir mostra um trecho de um arquivo de projeto, em que um nome de um arquivo que contém propriedades específicas de um subtipo de projeto, é passado para esse subtipo de projeto.
<ProjectExtensions> <VisualStudio> <FlavorProperties GUID="{<FlavorGUID>}"> <FlavorProject TestFileFolder="TestFile" /> </FlavorProperties> </VisualStudio> </ProjectExtensions>