Persistência de projeto

A persistência é uma consideração de design fundamental para o seu projeto. A maioria dos projetos usa itens de projeto que representam arquivos; Visual Studio também oferece suporte a projetos cujos dados não são baseados em arquivo. Os arquivos de propriedade do projeto e o arquivo de projeto devem ser persistentes. O IDE instrui o projeto a salvar a si mesmo ou a um item de projeto.

Os modelos para projetos são passados para a fábrica de projetos. Os modelos devem suportar a inicialização de todos os itens de projeto de acordo com os requisitos do tipo de projeto específico. Esses modelos podem ser salvos posteriormente como arquivos de projeto e gerenciados pelo IDE por meio da solução. Para obter mais informações, consulte Criando instâncias de projeto usando fábricas e soluções de projeto.

Os itens de projeto podem ser baseados em arquivo ou não:

  • Os itens baseados em arquivo podem ser locais ou remotos. Em projetos da Web em C#, por exemplo, as conexões com arquivos em um sistema remoto persistem localmente, enquanto os próprios arquivos persistem no sistema remoto.

  • Itens não baseados em arquivo podem salvar itens em um banco de dados ou repositório.

Confirmar modelos

Depois de decidir onde os itens de projeto estão localizados, você deve escolher o modelo de confirmação apropriado. Por exemplo, em um modelo baseado em arquivo com arquivos locais, cada projeto pode ser salvo de forma autônoma. Em um modelo de repositório, você pode salvar vários itens em uma transação. Para obter mais informações, consulte Decisões de design de tipo de projeto.

Para determinar extensões de nome de arquivo, os projetos implementam a interface, que fornece informações que permitem que o cliente de um objeto implemente a caixa de diálogo Salvar como, ou seja, preencha a lista suspensa Salvar como tipo e gerencie a IPersistFileFormatextensão de nome de arquivo inicial.

O IDE chama a IPersistFileFormat interface no projeto para indicar que o projeto deve persistir seus itens de projeto conforme apropriado. Portanto, o objeto possui todos os aspectos de seu arquivo e formato. Isso inclui o nome do formato do objeto.

No caso em que os itens não são arquivos, IPersistFileFormat ainda é como os itens não baseados em arquivo são persistentes. Arquivos de projeto, como arquivos .vbp para projetos do Visual Basic ou arquivos .vcproj para projetos do Visual C++, também devem ser persistentes.

Para ações de salvamento, o IDE examina a tabela de documentos em execução (RDT) e a hierarquia passa os comandos para as IVsPersistHierarchyItem interfaces e IVsPersistHierarchyItem2 . O IsItemDirty método é implementado para determinar se o item foi modificado. Se o item tiver, o método é implementado para salvar o SaveItem item modificado.

Os métodos na IVsPersistHierarchyItem2 interface são usados para determinar se um item pode ser recarregado e, se o item puder ser, para recarregá-lo. Além disso, o IgnoreItemFileChanges método pode ser implementado para fazer com que os itens alterados sejam descartados sem serem salvos.

Confira também