Freigeben über


Projektpersistenz

Persistenz ist eine wichtige Entwurfsüberlegung für Ihr Projekt. Die meisten Projekte verwenden Projektelemente, die Dateien darstellen; Visual Studio unterstützt auch Projekte, deren Daten nicht dateibasiert sind. Sowohl die Dateien im Besitz des Projekts als auch die Projektdatei müssen beibehalten werden. Die IDE weist das Projekt an, sich selbst oder ein Projektelement zu speichern.

Vorlagen für Projekte werden an die Projektfactory übergeben. Die Vorlagen sollten die Initialisierung aller Projektelemente entsprechend den Anforderungen des jeweiligen Projekttyps unterstützen. Diese Vorlagen können später als Projektdateien gespeichert und von der IDE über die Lösung verwaltet werden. Weitere Informationen finden Sie unter Erstellen von Projektinstanzen mithilfe von Project Factories und Lösungen.

Projektelemente können dateibasiert oder nicht dateibasiert sein:

  • Dateibasierte Elemente können lokal oder remote sein. In Webprojekten in C# werden z. B. Verbindungen mit Dateien auf einem Remotesystem lokal beibehalten, während die Dateien selbst auf dem Remotesystem beibehalten werden.

  • Nicht dateibasierte Elemente können Elemente in einer Datenbank oder einem Repository speichern.

Commitmodelle

Nachdem Sie entschieden haben, wo sich die Projektelemente befinden, müssen Sie das entsprechende Commitmodell auswählen. In einem dateibasierten Modell mit lokalen Dateien kann jedes Projekt beispielsweise autonom gespeichert werden. In einem Repositorymodell können Sie mehrere Elemente in einer Transaktion speichern. Weitere Informationen finden Sie unter Projekttypentwurfsentscheidungen.

Um Dateinamenerweiterungen zu ermitteln, implementieren Projekte die IPersistFileFormat Schnittstelle, die dem Client eines Objekts die Implementierung des Dialogfelds "Speichern unter" ermöglicht, d. h. die Dropdownliste "Dateityp " auszufüllen und die ursprüngliche Dateinamenerweiterung zu verwalten.

Die IDE ruft die IPersistFileFormat Schnittstelle des Projekts auf, um anzugeben, dass das Projekt die Projektelemente entsprechend beibehalten soll. Daher besitzt das Objekt alle Aspekte der Datei und des Formats. Dies schließt den Namen des Formats des Objekts ein.

In dem Fall, in dem Elemente keine Dateien sind, IPersistFileFormat werden weiterhin nicht dateibasierte Elemente beibehalten. Projektdateien, z. B. VBP-Dateien für Visual Basic-Projekte oder VCPROJ-Dateien für Visual C++-Projekte, müssen ebenfalls beibehalten werden.

Bei Speicheraktionen untersucht die IDE die ausgeführte Dokumenttabelle (RDT), und die Hierarchie übergibt die Befehle an die IVsPersistHierarchyItem Schnittstellen.IVsPersistHierarchyItem2 Die IsItemDirty Methode wird implementiert, um zu bestimmen, ob das Element geändert wurde. Wenn das Element vorhanden ist, wird die SaveItem Methode implementiert, um das geänderte Element zu speichern.

Die Methoden auf der IVsPersistHierarchyItem2 Schnittstelle werden verwendet, um zu bestimmen, ob ein Element neu geladen werden kann und ob das Element neu geladen werden kann. Darüber hinaus kann die IgnoreItemFileChanges Methode implementiert werden, um zu bewirken, dass geänderte Elemente nicht gespeichert werden Karte.

Siehe auch