Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. 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 a persistência do arquivo de projeto para atender aos seguintes requisitos:
Armazene os dados usados como parte da construção do projeto. (Para obter mais informações sobre o Microsoft Build Engine, consulte MSBuild.) As informações relacionadas à compilação podem:
Dados independentes da configuração. Ou seja, dados armazenados em elementos MSBuild com condições em branco ou ausentes.
Dados dependentes da configuração. Ou seja, dados armazenados em elementos do MSBuild que são condicionados para uma configuração de projeto específica. Por exemplo:
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
Armazene dados que não são relevantes para a construção. Esses dados podem ser expressos em XML de forma livre que não é validado em relação a um esquema XML.
Dados independentes da configuração.
Dados dependentes da configuração.
Informação persistente relacionada à compilação
A persistência de dados úteis para criar um projeto é tratada através do MSBuild. O sistema MSBuild mantém uma tabela mestre de informações relacionadas à compilação. Os subtipos de projeto são responsáveis por acessar esses dados para obter e definir valores de propriedade. Os subtipos de projeto também podem aumentar a tabela de dados relacionada à compilação adicionando propriedades adicionais a serem persistidas e removendo propriedades para que não sejam persistentes.
Para modificar os dados MSBuild, um subtipo de projeto é responsável por recuperar o objeto de propriedade MSBuild do sistema de projeto base através do IVsBuildPropertyStorage.
IVsBuildPropertyStorage é uma interface implementada no sistema de projeto núcleo e o subtipo de projeto agregador consulta-o ao executar QueryInterface.
O procedimento a seguir descreve as etapas para remover uma propriedade usando IVsBuildPropertyStorage.
Para remover uma propriedade de um arquivo de projeto MSBuild
Chamar
QueryInterfaceem IVsBuildPropertyStorage do subtipo de projeto.Ligue RemoveProperty com
pszPropNamedefinido para a propriedade que pretenda remover.
Persistência de Informações Não Relacionadas à Compilação
A persistência de dados em ficheiros de projeto que não são relevantes para a construção é tratada através 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 à construção.
O projeto base chama o objeto agregador do subtipo de projeto principal (ou seja, o subtipo de projeto mais externo) para carregar e salvar dados independentes de configuração e chama os objetos de configuração do projeto do subtipo de projeto para carregar ou salvar 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 que é dedicado a um subtipo de projeto específico e usa esse mecanismo como uma forma de persistir o estado entre os níveis de agregação.
O projeto base chama a implementação do IPersistXMLFragmentsubtipo de projeto mais externo passando em 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 de 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, onde 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>