Función SccCreateSubProject
Esta función crea un subproyecto con el nombre especificado en un proyecto primario existente especificado por el lpParentProjPath
argumento .
Sintaxis
SCCRTN SccCreateSubProject(
LPVOID pContext,
HWND hWnd,
LPSTR lpUser,
LPCSTR lpParentProjPath,
LPCSTR lpSubProjName,
LPSTR lpAuxProjPath,
LPSTR lpSubProjPath
);
Parámetros
pContext
[in] Puntero de contexto del complemento de control de código fuente.
hWnd
[in] Identificador de la ventana del IDE que el complemento de control de código fuente puede usar como elemento primario para los cuadros de diálogo que proporciona.
lpUser
[dentro, fuera] Nombre de usuario (hasta SCC_USER_SIZE, incluido el terminador NULL).
lpParentProjPath
[in] Cadena que identifica la ruta de acceso del proyecto primario (hasta SCC_PRJPATH_SIZE, incluido el terminador NULL).
lpSubProjName
[in] Nombre del subproyecto sugerido (hasta SCC_PRJPATH_SIZE, incluido el terminador NULL).
lpAuxProjPath
[dentro, fuera] Cadena auxiliar que identifica el proyecto (hasta SCC_PRJPATH_SIZE, incluido el terminador NULL).
lpSubProjPath
[dentro, fuera] Cadena de salida que identifica la ruta de acceso del subproyecto (hasta SCC_PRJPATH_SIZE, incluido el terminador NULL).
Valor devuelto
Se espera que la implementación del complemento de control de código fuente de esta función devuelva uno de los siguientes valores:
Valor | Descripción |
---|---|
SCC_OK | El subproyecto se creó correctamente. |
SCC_E_INITIALIZEFAILED | No se pudo inicializar el proyecto primario. |
SCC_E_INVALIDUSER | El usuario no pudo iniciar sesión en el sistema de control de código fuente. |
SCC_E_COULDNOTCREATEPROJECT | No se puede crear el subproyecto. |
SCC_E_PROJSYNTAXERR | Sintaxis de proyecto no válida. |
SCC_E_UNKNOWNPROJECT | El proyecto primario es desconocido para el complemento de control de código fuente. |
SCC_E_INVALIDFILEPATH | Ruta de acceso de archivo no válida o no utilizable. |
SCC_E_NOTAUTHORIZED | No se permite al usuario realizar esta operación. |
SCC_E_ACCESSFAILURE | Se produjo un problema al acceder al sistema de control de código fuente, probablemente debido a problemas de red o contención. Se recomienda un reintento. |
SCC_E_CONNECTIONFAILURE | Hubo un problema de conexión del complemento de control de código fuente. |
SCC_E_NONSPECIFICERROR SCC_E_UNKNOWNERROR |
Error no específico. |
Comentarios
Si ya existe un subproyecto con el nombre, la función puede cambiar el nombre predeterminado para crear uno único, por ejemplo agregando "_<number>" a él. El autor de la llamada debe estar preparado para aceptar cambios en lpUser
, lpSubProjPath
y lpAuxProjPath
. A lpSubProjPath
continuación, los argumentos y lpAuxProjPath
se usan en una llamada a SccOpenProject. El autor de la llamada no debe modificarlos al volver. Estas cadenas proporcionan una manera de que el complemento de control de código fuente realice un seguimiento de la información que necesita asociar a un proyecto. El IDE del autor de la llamada no mostrará estos dos parámetros tras la devolución, ya que el complemento puede usar una cadena con formato que podría no ser adecuada para su visualización. La función devuelve un código correcto o de error y, si se ejecuta correctamente, rellena la variable lpSubProjPath
con la ruta de acceso completa del proyecto al nuevo proyecto.
Esta función es similar a SccGetProjPath, salvo que crea de forma silenciosa un proyecto en lugar de pedir al usuario que seleccione uno. Cuando se llama a la SccCreateSubProject
función y lpAuxProjPath
no estará vacía y se corresponderá con un proyecto lpParentProjName
válido. Normalmente, el IDE recibe estas cadenas de una llamada anterior a la SccGetProjPath
función o SccGetParentProjectPath.
El lpUser
argumento es el nombre de usuario. El IDE pasará el mismo nombre de usuario que había recibido anteriormente de SccGetProjPath
y el complemento de control de código fuente debe usar el nombre como valor predeterminado. Si el usuario ya tiene una conexión abierta con el complemento, el complemento debe intentar eliminar las indicaciones para asegurarse de que la función funciona de forma silenciosa. Sin embargo, si se produce un error en el inicio de sesión, el complemento debe solicitar al usuario un inicio de sesión y, cuando recibe un inicio de sesión válido, vuelva a pasar el nombre en lpUser
. Dado que el complemento puede cambiar esta cadena, el IDE siempre asignará un búfer de tamaño (SCC_USER_LEN+1 o SCC_USER_SIZE, que incluye espacio para el terminador nulo). Si se cambia la cadena, la nueva cadena debe ser un nombre de inicio de sesión válido (al menos tan válido como la cadena anterior).
Notas técnicas de SccCreateSubProject y SccGetParentProjectPath
La adición de soluciones y proyectos al control de código fuente se ha simplificado en Visual Studio para minimizar el número de veces que se solicita al usuario que seleccione ubicaciones en el sistema de control de código fuente. Visual Studio activa estos cambios si un complemento de control de código fuente admite ambas funciones SccCreateSubProject
y SccGetParentProjectPath
. Sin embargo, se puede usar la siguiente entrada del Registro para deshabilitar estos cambios y revertir al comportamiento anterior de Visual Studio (Complemento de control de código fuente versión 1.1):
[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\SourceControl] "DoNotCreateSolutionRootFolderInSourceControl"=dword:00000001
Si esta entrada del Registro no existe o está establecida en dword:000000000, Visual Studio intenta usar las nuevas funciones SccCreateSubProject
y SccGetParentProjectPath
.
Si la entrada del Registro se establece en dword:00000001, Visual Studio no intenta usar estas nuevas funciones y las operaciones de agregar al control de código fuente funcionan como lo hicieron en versiones anteriores de Visual Studio.