Persistencia de un proyectoProject Persistence

Persistencia es una consideración de diseño clave para el proyecto.Persistence is a key design consideration for your project. Mayoría de los proyectos usa elementos de proyecto que representan archivos; Programa para la mejoraVisual Studio también admite proyectos cuyos datos están no basados en archivos.Most projects use project items that represent files; Programa para la mejoraVisual Studio also supports projects whose data is non-file-based. Se deben conservar tanto los archivos que pertenecen al proyecto y el archivo de proyecto.Both the files owned by the project and the project file must be persisted. El IDE indica el proyecto para guardar consigo mismo ni con un elemento de proyecto.The IDE instructs the project to save itself or a project item.

Plantillas para proyectos se pasan a la fábrica de proyecto.Templates for projects are passed to the project factory. Las plantillas deben admitir la inicialización de todos los elementos de proyecto según los requisitos del tipo de proyecto específico.The templates should support the initialization of all project items according to the requirements of the specific project type. Estas plantillas más adelante se guardan como archivos de proyecto y administradas por el IDE a través de la solución.These templates can later be saved as project files and managed by the IDE through the solution. Para obtener más información, consulte crear proyecto instancias por usar generadores de proyectos y soluciones.For more information, see Creating Project Instances By Using Project Factories and Solutions.

Elementos de proyecto pueden ser basados en archivos o no basada en archivos:Project items can be file-based or non-file-based:

  • Elementos basados en archivos pueden ser locales o remotos.File-based items can be local or remote. En los proyectos Web en C#, por ejemplo, las conexiones a los archivos en un sistema remoto se conservan localmente, mientras que los archivos se conservan en el 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.

  • Elementos basados en archivos no pueden guardar elementos en una base de datos o en el repositorio.Non-file-based items can save items to a database or repository.

Confirmar modelosCommit Models

Después de decidir dónde se encuentran los elementos de proyecto, debe elegir el modelo adecuado de confirmación.After deciding where the project items are located, you must choose the appropriate commit model. Por ejemplo, en un modelo basado en archivos con archivos locales, cada proyecto puede guardarse forma autónoma.For example, in a file-based model with local files, each project can be saved autonomously. En un modelo de repositorio, puede guardar varios elementos en una transacción.In a repository model, you can save several items in one transaction. Para obtener más información, consulte decisiones de diseño del tipo de proyecto.For more information, see Project Type Design Decisions.

Para determinar las extensiones de nombre de archivo, implementan proyectos de la IPersistFileFormat interfaz, que proporciona información que permita al cliente de un objeto que implemente la Guardar como cuadro de diálogo, es decir, en blanco para igualar la Guardar como tipo desplegable enumerar y administrar la extensión de nombre de archivo 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.

Las llamadas IDE el IPersistFileFormat elementos de interfaz en el proyecto para indicar que el proyecto debe conservar su proyecto según corresponda.The IDE calls the IPersistFileFormat interface on the project to indicate that the project should persist its project items as appropriate. Por lo tanto, el objeto es el propietario de todos los aspectos de su archivo y el formato.Therefore, the object owns all aspects of its file and format. Esto incluye el nombre del formato del objeto.This includes the name of the format of the object.

En el caso donde los elementos no son archivos, IPersistFileFormat sigue siendo cómo no basado en archivos se conservan los elementos.In the case where items are not files, IPersistFileFormat is still how non-file-based items are persisted. Archivos de proyecto, como los archivos .vbp para Visual BasicVisual Basic .vcproj o los proyectos de archivos para Visual C++Visual C++ proyectos, también debe conservarse.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 guardar las acciones, el IDE examina la tabla document ejecución (RDT) y la jerarquía pasa los comandos para la IVsPersistHierarchyItem y 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. El IsItemDirty se implementa el método para determinar si se ha modificado el elemento.The IsItemDirty method is implemented to determine whether the item has been modified. Si el elemento tiene, el SaveItem método se implementa para guardar el elemento modificado.If the item has, the SaveItem method is implemented to save the modified item.

Los métodos de la IVsPersistHierarchyItem2 interfaz se usan para determinar si puede volver a cargar un elemento y, si el elemento puede ser a cargarlo.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. Además, la IgnoreItemFileChanges método se puede implementar para que los elementos modificados se descarta sin que se va a guardar.Additionally, the IgnoreItemFileChanges method can be implemented to cause changed items to be discarded without being saved.

Vea tambiénSee Also

Lista de comprobación: Creación de nuevos tipos de proyecto Checklist: Creating New Project Types
Creación de instancias de proyecto mediante generadores de proyectoCreating Project Instances By Using Project Factories