Compartir a través de


Prácticas recomendadas para implementar un complemento de control de código fuente

Detalles técnicos siguientes pueden ayudarle confiable a implementar un complemento de control de código fuente en Visual Studio.

problemas de administración de memoria

En la mayoría de los casos, el (IDE) entorno de desarrollo integrado, el llamador, libera y asigna memoria. El complemento de control de código fuente devuelve las cadenas y otros elementos en búferes asignados por el llamador. Las excepciones se indican en descripciones de las funciones concretas donde aparecen.

matrices de nombres de archivo

Cuando una matriz de archivos se pasa, no se pasa como matriz contiguo de nombres de archivo. Se pasa como una matriz de punteros a los nombres de archivo. Por ejemplo, en SccGet (Función), los nombres de archivo se pasan por el parámetro de lpFileNames , donde es realmente puntero lpFileNames a char **. lpFileNames[0] es un puntero al nombre, lpFileNames[1] es un puntero al segundo nombre, etc.

modelo grande

Todos los punteros son de 32 bits, incluso en los sistemas operativos de 16 bits.

Rutas de acceso completas

Donde los nombres de archivos o directorios se especifican como argumentos, deben ser válidas rutas o rutas UNC, sin barras diagonales inversas de cierre. Es responsabilidad del complemento de control de código fuente traducir estos en las rutas de acceso relativas si es un requisito del sistema de control de código fuente subyacente.

Especifique una ruta de acceso completa para el archivo DLL registrado

El IDE carga ya no los archivos DLL de rutas de acceso relativas (por ejemplo. \NewProvider .dll). Una ruta de acceso completa del archivo DLL debe ser especificada (por ejemplo, C: \Providers\NewProvider .dll). Este requisito consolida la seguridad del IDE evitando la carga de archivos DLL no autorizados o suplantados de control de código fuente.

Comprobación de un complemento de control de código fuente de complemento de la instalación existente VSSCI Cuando Se

Un usuario que piensa instalar el complemento de control de código fuente ya tenga un complemento de control de código fuente existente instalado en el equipo. El programa (de instalación) de la instalación del complemento que cree debe determinar si hay valores existentes para las claves del Registro pertinentes. Si estas teclas ya están establecidos, el programa de instalación debe preguntar al usuario si registrar el complemento como el complemento de control de código fuente predeterminado y reemplazar el que está instalado.

Códigos de resultado e informes de errores

el código de retorno de SCC_OK para una función de control de código fuente indica que la operación ha tenido éxito para todos los archivos. Si se produce un error en la operación, es esperada devolver el último código de error encontrado.

La regla para señalar es que si se produce un error en el IDE, el IDE es responsable de notificarlo. Si se produce un error en el sistema de control de código fuente, el complemento de control de código fuente es responsable de notificarlo. Por ejemplo, “no hay archivos seleccionados” se notifican actualmente por el IDE, mientras que el complemento señalaría “This que el archivo está desprotegido en”.

La estructura de contexto

Durante la llamada a SccInitialize (Función), el llamador pasa el parámetro de ppvContext , que es un identificador sin inicializar un vacío. El complemento de control de código fuente puede omitir este parámetro o puede asignar una estructura de clase y colocar un puntero a esa estructura en el puntero pasado. El IDE no entiende esta estructura, sino que pasa un puntero a esta estructura en cada otra llamada en el complemento. Esto proporciona información valiosa de caché de contexto al complemento que puede usar para mantener la información de estado global que conserva a través de llamadas de función sin utilizar variables globales. el complemento es responsable de liberar la estructura en una llamada a SccUninitialize (Función).

Si el complemento establece SCC_CAP_REENTRANT cambiarla en SccInitialize (Función) (en concreto, en el parámetro de lpSccCaps ), las estructuras varias de contexto se utiliza para realizar el seguimiento de todos los proyectos que están abiertos.

Opciones de comando de Bitflags y otros

Para cada comando, como SccGet (Función), el IDE puede especificar muchas opciones que modifican el comportamiento del comando.

La API el valor de algunas opciones por el IDE con el parámetro de fOptions . Estas opciones se describen en Bitflags utilizados por comandos específicos y comandos a los que afecta. Éstas son normalmente las opciones para las que no pedirían pedirá al usuario.

La mayoría de las opciones configurables por el usuario de valor no son definido de esta manera, porque varían ampliamente entre complementos de control de código fuente. Por consiguiente, el mecanismo recomendado es un botón de Avanzadas>> . Por ejemplo, en el cuadro de diálogo de obtener , el IDE solo muestra información para comprender, pero también muestra un botón de Avanzadas>> si el complemento tiene opciones para este comando. Cuando el usuario hace clic en el botón de Avanzadas>> , el IDE llama SccGetCommandOptions (Función) para permitir que el complemento de control de código fuente para pedir al usuario la información, como bitflags o una fecha y una hora. El complemento devuelve esta información en una estructura que se recuperan durante el comando de SccGet .

Vea también

Otros recursos

Complementos de control de código fuente

crear un complemento de control de código fuente