Condividi tramite


Query Edit Query Save (VSPackage di controllo del codice sorgente)

Gli editor di Visual Studio possono trasmettere eventi QEQS (Query Edit Query Save). Visual Studio Source Control Stub implementa il servizio QEQS, in modo che sia il destinatario di eventi QEQS. Questi eventi vengono quindi delegati al vsPackage attualmente attivo del controllo del codice sorgente. Il vsPackage del controllo del codice sorgente attivo implementa i IVsQueryEditQuerySave2 metodi e . I metodi dell'interfaccia IVsQueryEditQuerySave2 vengono in genere chiamati immediatamente prima che un documento venga modificato per la prima volta e immediatamente prima del salvataggio di un documento.

Eventi QueryEditQuerySave

Il pacchetto VSPackage del controllo del codice sorgente deve gestire gli eventi QEQS implementando l'interfaccia IVsQueryEditQuerySave2 e i metodi necessari. Di seguito è riportata una breve descrizione dei due metodi che il VSPackage deve implementare almeno. L'implementazione effettiva deve essere conforme alla logica del modello di controllo del codice sorgente.

QueryEditFiles, metodo

Viene QueryEditFiles chiamato quando un progetto o un editor desidera modificare un file. Idealmente, questo metodo viene chiamato prima della modifica del file e quando viene salvato un file. Quando viene richiamato, il IVsQueryEditQuerySave2::QueryEditFiles metodo controlla se i file specificati sono sotto controllo del codice sorgente, se devono essere estratte e se possono essere ricaricati. Se le circostanze impediscono la modifica dei file, il IVsQueryEditQuerySave2::QueryEditFiles metodo indica al programma chiamante di annullare la modifica. È anche possibile che il chiamante specifichi una modalità di chiamata. Nella modalità "invisibile all'utente", questo metodo esegue l'azione solo se non causa la visualizzazione di alcuna interfaccia utente. Se l'interfaccia utente è inevitabile, è necessario restituire un flag per indicare il problema.

Il metodo si comporta in modo transazionale; ovvero, se la modifica viene annullata in un singolo file, la modifica viene annullata per tutti i file. Viceversa, se la modifica è consentita, è consentita per tutti i file. Se questo metodo consente la modifica una sola volta per un determinato set di file, deve sempre consentire la modifica nelle chiamate successive per lo stesso set di file. Il ciclo allow-edit continua fino a quando i file non vengono chiusi, salvati e ricaricati; fino a quando gli attributi (proprietà) non cambiano; o fino a quando il pacchetto del controllo del codice sorgente non viene modificato. I casi da considerare nell'implementazione del IVsQueryEditQuerySave2::QueryEditFiles metodo includono più file, file speciali, annullamento dall'utente e modifiche in memoria.

QuerySaveFiles, metodo

Viene QuerySaveFiles chiamato quando un progetto o un editor deve salvare un set di file. Quando viene richiamato, il IVsQueryEditQuerySave2::QuerySaveFiles metodo controlla se i file specificati sono di sola lettura e se sono sotto il controllo del codice sorgente. Se i file devono essere estratti, la chiamata viene delegata al pacchetto del controllo del codice sorgente. Se le circostanze impediscono il salvataggio dei file, il IVsQueryEditQuerySave2::QuerySaveFiles metodo deve indicare all'editor di annullare il salvataggio. Come per il IVsQueryEditQuerySave2::QueryEditFiles metodo, è possibile che il chiamante specifichi una modalità di chiamata. Nella modalità "invisibile all'utente", questo metodo esegue l'azione solo se non causa la visualizzazione di alcuna interfaccia utente. Se l'interfaccia utente è inevitabile, è necessario restituire un flag per indicare il problema.

Questo metodo deve comportarsi in modo transazionale; ovvero, se il salvataggio viene annullato in un singolo file, il salvataggio viene annullato per tutti i file. Viceversa, se il salvataggio è consentito, deve essere consentito per tutti i file. Come per il IVsQueryEditQuerySave2::QueryEditFiles metodo , i casi da considerare nell'implementazione del IVsQueryEditQuerySave2::QuerySaveFiles metodo includono più file, file speciali, annullamento dall'utente e modifiche in memoria.