持久性是对项目的一个关键设计注意事项。 大多数项目使用表示文件的项目项; Visual Studio 还数据的非基于文件的项目。 必须保存该项目和项目文件拥有的两个文件。 IDE 指示项目保存自身或项目项。
项目的模板传递到项目工厂。 模板应根据特定项目类型的要求支持所有项目项的初始化。 这些模板可以稍后保存为项目文件以及由 IDE 管理通过解决方案。 有关更多信息,请参见使用创建的项目工厂的项实例和 解决方案。
项目项可以基于文件或非基于文件:
基于文件的项可以是本地或远程。 在 Web 在 c# 项目中,例如,与文件的连接到远程系统仍存在,局部,而文件位于远程系统仍存在。
不基于文件的项目可以将项目保存到数据库或储存库中。
实现模型
在决定稍后的位置项目项,您必须选择适当实现模型。 例如,在使用本地文件的基于文件的模型,每个项目可以独立地保存。 在储存库模型,可以保存在一个事务的若干个项目。 有关更多信息,请参见 项类型设计决策。
若要确定文件的扩展名,项目实现 IPersistFileFormat 接口,提供信息使对象客户端实现 保存 对话框是,填充的 另存为类型 下拉列表和管理初始文件扩展名。
IDE 对该项目的 IPersistFileFormat 接口指示该项目应保留其项目项根据需要。 因此,对象拥有其文件和布局的所有方面。 这包括对象的布局的名称。
在项目不是文件的情况下, IPersistFileFormat 仍是基于非文件的项目如何保持。 还必须保存项目文件,如 Visual Basic 项目的 .vbp 文件或 Visual C++ 项目的 .vcproj 文件,。
对于保存操作, IDE 检查运行文档表 (RDT),并且该层次结构通过命令。 IVsPersistHierarchyItem 和 IVsPersistHierarchyItem2 接口。 IsItemDirty 方法以确定是否修改项目。 如果项目使用, SaveItem 方法执行保存修改后的项目。
在 IVsPersistHierarchyItem2 接口的方法来确定项是可以重新加载,因此,如果该项目可以是,重新加载它。 此外, IgnoreItemFileChanges 方法实现导致已更改的项被放弃,而不会保存。