Salvataggio permanente dei progetti
La persistenza è una considerazione di progettazione chiave per il progetto. La maggior parte dei progetti usa elementi di progetto che rappresentano i file; Visual Studio supporta anche progetti i cui dati non sono basati su file. Entrambi i file di proprietà del progetto e del file di progetto devono essere salvati in modo permanente. L'IDE indica al progetto di salvare se stesso o un elemento di progetto.
I modelli per i progetti vengono passati alla factory del progetto. I modelli devono supportare l'inizializzazione di tutti gli elementi del progetto in base ai requisiti del tipo di progetto specifico. Questi modelli possono essere salvati in un secondo momento come file di progetto e gestiti dall'IDE tramite la soluzione. Per altre informazioni, vedere Creazione di istanze di progetto tramite project factory e soluzioni.
Gli elementi del progetto possono essere basati su file o non basati su file:
Gli elementi basati su file possono essere locali o remoti. Nei progetti Web in C#, ad esempio, le connessioni ai file in un sistema remoto vengono mantenute localmente, mentre i file stessi persistono nel sistema remoto.
Gli elementi non basati su file possono salvare gli elementi in un database o in un repository.
Eseguire il commit dei modelli
Dopo aver deciso dove si trovano gli elementi del progetto, è necessario scegliere il modello di commit appropriato. Ad esempio, in un modello basato su file con file locali, ogni progetto può essere salvato in modo autonomo. In un modello di repository è possibile salvare più elementi in una transazione. Per altre informazioni, vedere Project Type Design Decisions.For more information, see Project Type Design Decisions.
Per determinare le estensioni di file, i progetti implementano l'interfaccia IPersistFileFormat , che fornisce informazioni che consentono al client di un oggetto di implementare la finestra di dialogo Salva con nome, ovvero compilare l'elenco a discesa Salva con nome e gestire l'estensione del nome file iniziale.
L'IDE chiama l'interfaccia IPersistFileFormat
nel progetto per indicare che il progetto deve rendere persistenti gli elementi del progetto in base alle esigenze. Pertanto, l'oggetto è proprietario di tutti gli aspetti del relativo file e formato. Include il nome del formato dell'oggetto.
Nel caso in cui gli elementi non siano file, IPersistFileFormat
è comunque il modo in cui gli elementi non basati su file vengono mantenuti. Anche i file di progetto, ad esempio i file vbp per i progetti Visual Basic o vcproj per i progetti Visual C++, devono essere salvati in modo permanente.
Per le azioni di salvataggio, l'IDE esamina la tabella dei documenti in esecuzione (RDT) e la gerarchia passa i comandi alle IVsPersistHierarchyItem interfacce e IVsPersistHierarchyItem2 . Il IsItemDirty metodo viene implementato per determinare se l'elemento è stato modificato. Se l'elemento contiene, il SaveItem metodo viene implementato per salvare l'elemento modificato.
I metodi nell'interfaccia IVsPersistHierarchyItem2
vengono usati per determinare se un elemento può essere ricaricato e, se l'elemento può essere, ricaricarlo. Inoltre, il IgnoreItemFileChanges metodo può essere implementato per fare in modo che gli elementi modificati vengano rimossi senza essere salvati.