Compartir vía


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 QueryEditFiles a y recibir aprobación para cambiar el documento del 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 son responsables de administrar la persistencia de un elemento, es responsable de implementar el seguimiento de estado modificado.

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

  • Rechace la llamada para cambiar, en cuyo caso el editor o el proyecto deben permanecer en estado sin cambios (limpios).

  • 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. Como resultado, estas llamadas se deben integrar durante la creación del proyecto o el 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 llamada a IVsQueryEditQuerySave2::QuerySaveFile o IVsQueryEditQuerySave2::QuerySaveFiles se realiza para usted.

Nota:

Realice siempre estas llamadas de forma preventiva, es decir, cuando el editor pueda 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 en el proyecto abierto o cerrado. Los agentes de escucha que quieran esta información en el inicio pueden esperar al OnAfterOpenSolution evento y recorrer en iteración la solución para encontrar la información que necesitan. Al apagar, esta información no es necesaria. IVsTrackProjectDocuments2se 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.