Compartir a través de


Detalles de configuración del control de código fuente

Para implementar el control de código fuente, debe configurar correctamente el sistema de proyecto o el editor para hacer lo siguiente:

  • Solicitar permiso para realizar la transición al estado cambiado

  • Solicitar permiso para guardar un archivo

  • Solicitar permiso para agregar, quitar o cambiar el nombre de los archivos en el proyecto

Solicitar permiso para realizar la transición al estado cambiado

Un proyecto o editor debe solicitar permiso para realizar la transición al estado modificado (sucio) mediante una llamada a IVsQueryEditQuerySave2. Cada editor que implementa IsDocDataDirty debe llamar a QueryEditFiles y recibir aprobación para cambiar el documento desde el entorno antes de devolver True para IsDocDataDirty. Un proyecto es esencialmente un editor para un archivo de proyecto y, como resultado, tiene la misma responsabilidad de implementar el seguimiento de estado modificado para el archivo del proyecto como lo hace un editor de texto para sus archivos. El entorno controla el estado cambiado de la solución, pero debe controlar el estado cambiado de cualquier objeto al que hace referencia la solución, pero no almacena, como un archivo de proyecto o sus elementos. En general, si el proyecto o el editor es responsable de administrar la persistencia, entonces es responsable de implementar el seguimiento de cambios de estado de un elemento.

En respuesta a la IVsQueryEditQuerySave2::QueryEditFiles llamada, el entorno puede hacer lo siguiente:

  • Rechace la llamada de cambio, en cuyo caso el editor o el proyecto deben permanecer en estado inalterado (limpio).

  • Indique que se deben volver a cargar los datos del documento. Para un proyecto, el entorno volverá a cargar los datos del proyecto. Un editor debe volver a cargar los datos del disco a través de su ReloadDocData implementación. En cualquier caso, el contexto del proyecto o del editor puede cambiar cuando se vuelven a cargar los datos.

    Es una tarea compleja y difícil de ajustar las llamadas adecuadas IVsQueryEditQuerySave2::QueryEditFiles a una base de código existente. Por consiguiente, estas llamadas deben integrarse durante la creación del proyecto o editor.

Solicitar permiso para guardar un archivo

Antes de que un proyecto o editor guarde un archivo, debe llamar a QuerySaveFile o QuerySaveFiles. En el caso de los archivos de proyecto, la solución completa automáticamente estas llamadas, que sabe cuándo guardar un archivo de proyecto. Los editores son responsables de realizar estas llamadas a menos que la implementación del editor de IVsPersistDocData2 use la función SaveDocDataToFileauxiliar . Si el editor implementa IVsPersistDocData2 de esta manera, la invocación a IVsQueryEditQuerySave2::QuerySaveFile o IVsQueryEditQuerySave2::QuerySaveFiles se realiza automáticamente.

Nota:

Realice siempre estas llamadas de forma preventiva, es decir, en un momento en que el editor esté en condiciones de recibir una cancelación.

Solicitar permiso para agregar, quitar o cambiar el nombre de archivos en el proyecto

Para que un proyecto pueda agregar, cambiar el nombre o quitar un archivo o directorio, debe llamar al método adecuado IVsTrackProjectDocuments2::OnQuery* para solicitar permiso del entorno. Si se concede permiso, el proyecto debe completar la operación y, a continuación, llamar al método adecuado IVsTrackProjectDocuments2::OnAfter* para notificar al entorno que se ha completado la operación. El proyecto debe llamar a los métodos de la IVsTrackProjectDocuments2 interfaz para todos los archivos (por ejemplo, archivos especiales) y no solo los archivos primarios. Las llamadas de archivo son obligatorias, pero las llamadas de directorio son opcionales. Si el proyecto tiene información de directorio, debe llamar a los métodos adecuados IVsTrackProjectDocuments2 , pero si no tiene esta información, el entorno deducirá la información del directorio.

El proyecto no debe llamar a los métodos de IVsTrackProjectDocuments2 al abrir o cerrar el proyecto. Los escuchadores que quieran esta información al inicio pueden esperar a que ocurra el evento OnAfterOpenSolution e iterar a través de la solución para encontrar la información que necesitan. Al apagar, esta información no es necesaria. IVsTrackProjectDocuments2 se proporciona desde SVsTrackProjectDocuments.

Para cada acción agregar, cambiar el nombre y quitar, hay un OnQuery* método y un OnAfter* método. Llame al OnQuery* método para pedir permiso para agregar, cambiar el nombre o quitar el archivo o directorio. Llame al OnAfter* método después de que el archivo o directorio se haya agregado, cambiado el nombre o quitado y el estado del proyecto refleje el nuevo estado.