Persistência de projetoProject Persistence

Persistência é uma consideração de design importante para seu projeto.Persistence is a key design consideration for your project. A maioria dos projetos usar itens de projeto que representam arquivos; Visual StudioVisual Studio também oferece suporte a projetos cujos dados são não baseados em arquivo.Most projects use project items that represent files; Visual StudioVisual Studio also supports projects whose data is non-file-based. Os arquivos de propriedade do projeto e o arquivo de projeto devem ser persistente.Both the files owned by the project and the project file must be persisted. O IDE instrui o projeto para salvar um item de projeto ou consigo próprio.The IDE instructs the project to save itself or a project item.

Modelos para projetos são passados para a fábrica de projeto.Templates for projects are passed to the project factory. Os modelos devem dar suporte a inicialização de todos os itens de projeto acordo com os requisitos do tipo de projeto específico.The templates should support the initialization of all project items according to the requirements of the specific project type. Esses modelos posteriormente podem ser salvos como arquivos de projeto e gerenciados pelo IDE por meio da solução.These templates can later be saved as project files and managed by the IDE through the solution. Para obter mais informações, consulte criar projeto instâncias por usando fábricas de projeto e soluções.For more information, see Creating Project Instances By Using Project Factories and Solutions.

Itens de projeto podem ser baseada em arquivo ou não baseados em arquivo:Project items can be file-based or non-file-based:

  • Itens com base em arquivo podem ser local ou remoto.File-based items can be local or remote. Em projetos Web em c#, por exemplo, as conexões com arquivos em um sistema remoto persistirem localmente, enquanto os próprios arquivos persistirem no sistema remoto.In Web projects in C#, for example, connections to files on a remote system persist locally, whereas the files themselves persist on the remote system.

  • Itens com base em arquivo não podem salvar itens em um banco de dados ou um repositório.Non-file-based items can save items to a database or repository.

Confirmar modelosCommit Models

Depois de decidir onde se encontram os itens de projeto, você deve escolher o modelo de confirmação apropriado.After deciding where the project items are located, you must choose the appropriate commit model. Por exemplo, em um modelo baseado em arquivo com arquivos locais, cada projeto pode ser salvo autonomia.For example, in a file-based model with local files, each project can be saved autonomously. Em um modelo de repositório, você pode salvar vários itens em uma transação.In a repository model, you can save several items in one transaction. Para obter mais informações, consulte decisões de Design de tipo de projeto.For more information, see Project Type Design Decisions.

Para determinar as extensões de nome de arquivo, projetos de implementam o IPersistFileFormat interface, que fornece informações permitindo que o cliente de um objeto para implementar o Salvar como caixa de diálogo — ou seja, preencha o Salvar como tipo suspensa listar e gerenciar a extensão de nome de arquivo inicial.To determine file name extensions, projects implement the IPersistFileFormat interface, which provides information enabling the client of an object to implement the Save As dialog box—that is, to fill in the Save As Type drop-down list and manage the initial file name extension.

O IDE chama o IPersistFileFormat interface no projeto para indicar que o projeto deve manter seu projeto itens conforme apropriado.The IDE calls the IPersistFileFormat interface on the project to indicate that the project should persist its project items as appropriate. Portanto, o objeto possui todos os aspectos do seu arquivo e o formato.Therefore, the object owns all aspects of its file and format. Isso inclui o nome do formato do objeto.This includes the name of the format of the object.

No caso em que itens não são arquivos, IPersistFileFormat ainda é como não-baseada em arquivo itens são persistentes.In the case where items are not files, IPersistFileFormat is still how non-file-based items are persisted. Projeto de arquivos, como arquivos. vbp para Visual BasicVisual Basic arquivos de projetos ou. vcproj para Visual C++Visual C++ projetos, também deve ser persistente.Project files, such as .vbp files for Visual BasicVisual Basic projects or .vcproj files for Visual C++Visual C++ projects, must also be persisted.

Para salvar as ações, o IDE examina a tabela de documento (RDT) em execução e a hierarquia passa os comandos para o IVsPersistHierarchyItem e IVsPersistHierarchyItem2 interfaces.For save actions, the IDE examines the running document table (RDT) and the hierarchy passes the commands to the IVsPersistHierarchyItem and the IVsPersistHierarchyItem2 interfaces. O IsItemDirty método é implementado para determinar se o item foi modificado.The IsItemDirty method is implemented to determine whether the item has been modified. Se o item tiver, o SaveItem método é implementado para salvar o item modificado.If the item has, the SaveItem method is implemented to save the modified item.

Os métodos de IVsPersistHierarchyItem2 interface são usados para determinar se um item pode ser recarregado e, se o item pode ser recarregá-lo.The methods on the IVsPersistHierarchyItem2 interface are used to determine whether an item can be reloaded and, if the item can be, to reload it. Além disso, o IgnoreItemFileChanges método pode ser implementado para fazer com que itens alterados sejam descartadas sem ser salvado.Additionally, the IgnoreItemFileChanges method can be implemented to cause changed items to be discarded without being saved.

Consulte tambémSee Also

Lista de verificação: Criar novos tipos de projeto Checklist: Creating New Project Types
Criar instâncias de projetos usando fábricas de projetosCreating Project Instances By Using Project Factories