2012-05-28 23 views
13

Trabajo en diferentes proyectos que utilizan diferentes proveedores de control de código fuente. Subversion, Git, TFS, etc ...Visual Studio 2010 no reconoce el control de fuente adecuado Plug In

Para trabajar en Subversion, he instalado AnkhSVN. Para trabajar en Git, he instalado el proveedor de control de fuente de Git Para trabajar en TFS, ... bueno, ya entendiste la idea.

La información de control de fuente se guarda como parte del archivo de solución.

Sin embargo, invariablemente, cuando abro un nuevo proyecto, Visual Studio sigue utilizando lo que sea que haya sido el último proveedor de control de origen seleccionado. No parece recogerlo del archivo de solución. Siempre tengo que abrir el cuadro de diálogo Herramientas> Opciones para cambiar de proveedor (¡lo cual toma PARA SIEMPRE!)

¿Esto es algo que estoy haciendo mal? Esperaría que Visual Studio cambiara proveedores basados ​​en la solución que está abierta.

Si esto es algo que Visual Studio simplemente no hace, ¿hay una macro o extensión que lo resolverá automáticamente?

No puedo creer que esta pregunta no se haya formulado antes, pero no vi ningún truco obvio en la lista de StackOverflow de "Preguntas que ya pueden tener su respuesta". Lo cual, tristemente, parece apuntar a la respuesta de "soy solo yo".

+0

[Ninguno] (http://stackoverflow.com/questions/6678239/how-to-quickly-switch-source-control-providers-in-visual-studio-2010) of [these] (http: // stackoverflow.com/questions/5994009/how-to-configure-visual-studio-to-use-diferent-source-control-providers) ayudó? – jswolf19

+0

No. El primero no tiene una solución real (el tipo acaba de eliminar su necesidad de una solución). Y el segundo, las respuestas parecen ser "asegúrese de que la información de control de origen esté en la solución". Y, como dije, lo es. –

Respuesta

1

Visual Studio definitivamente lo admite. Se espera que el proveedor de control de código fuente persista algún tipo de información en el archivo de la solución acerca de qué proveedor es y qué enlaces está usando (si es necesario, creo que VSS y TFS lo usan).

Cuando VS carga la solución, se supone que debe elegir el proveedor correcto.

Parece de su pregunta, y de this question que está roto de alguna manera.

Puede que tenga que escribir una macro para hacer esto. No es particularmente difícil. Debe enganchar la interfaz SolutionEvents. No estoy seguro de cómo llegaría al proveedor de control de origen configurado. Comience here.

Con todo lo dicho, sin embargo, es se supone que funciona. Intenté deshabilitar todos los complementos menos dos y ver si funcionaba. Lo que quiero decir es que tal vez uno de los proveedores está lanzando una excepción durante la carga de la solución y VS está renunciando a los demás.

+0

Como dices, persistieron los enlaces SCC en la solución que parecen existir pero que están totalmente rotos. Tampoco tiene sentido ya que la solución podría residir en diferentes repositorios con multitud de sistemas RCS. Mi [extensión] (https://visualstudiogallery.msdn.microsoft.com/d99d30fb-3dbc-45f0-8c91-8c103e11f996) resuelve el problema de una manera diferente: detecta la presencia de carpetas reservadas y carga el proveedor de SCC correcto en consecuencia. – ceztko

2

En realidad, no una respuesta, pero esto era demasiado grande como para poner en un comentario:

me gusta decir "funciona para mí", pero que de hecho funciona para mí. Solo estoy usando AnkhSVN y el cliente TFS, pero Visual Studio cambia entre los dos dependiendo de la solución que abra. Entonces, lo que estás pidiendo definitivamente es "apoyo" para que funcione. Tal vez uno de los otros proveedores de complementos tiene un problema?

¿Ha abierto sus archivos de solución y ha confirmado que la información de control de origen está allí? Se debe tener este aspecto:

GlobalSection(SubversionScc) = preSolution 
    Svn-Managed = True 
    Manager = AnkhSVN - Subversion Support for Visual Studio 
EndGlobalSection 

GlobalSection(TeamFoundationVersionControl) = preSolution 
    SccNumberOfProjects = 5 
    SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} 
    SccTeamFoundationServer = http://XXXXX:8080/tfs/XXXXX 
    SccProjectUniqueName0 = ... 
    SccProjectName0 = ... 
    SccLocalPath0 = ... 
    <etc> 
EndGlobalSection 

Además, cuando se abre una solución apropiada, lo que indica que está recibiendo y que no se cambian de proveedor? ¿Recibes un mensaje de error o tu proyecto simplemente no aparece vinculado al control de origen?En particular, mis ventanas TFS permanecen abiertas y muestran errores extraños cuando abro una solución SVN, pero el menú contextual en el Explorador de soluciones cambia al proveedor correcto.

+0

Lo sé porque, dependiendo del complemento de control de fuente cargado (AnkhSVN, Git), aparecerán diferentes efectos visuales (iconos superpuestos que muestran el estado de los archivos, ventanas de herramientas adicionales que permiten operaciones de control de fuente, etc.) –

+0

Las ventanas adicionales no se abrirá ni cerrará automáticamente; se abrirán/cerrarán según lo que estaba abierto la última vez que cerró la solución, independientemente del proveedor de SCC. Pero sí, los iconos en el explorador de soluciones deben actualizarse automáticamente. –

+0

Comprobé mi archivo .sln, no tenía GlobalSection para SubversionScc, lo agregué como se indicó anteriormente, ahora VS cambiará las opciones de control de fuente cuando cargue esa solución. – jdcook72

5

El enlace del proveedor de la solución es, IMO, incorrecto ya que la solución puede residir en varios sistemas de control de origen. El truco consiste en cargar el proveedor de control de origen adecuado que controla los directorios reservados en un evento de solución de precarga de una extensión VS. El código del núcleo es como sigue:

IVsRegisterScciProvider vsRegisterScciProvider = GetService<IVsRegisterScciProvider>(); 
vsRegisterScciProvider.RegisterSourceControlProvider(sccProviderGuid); 

El código completo para una extensión tal es here. Puedo lanzarlo poco después de un poco de prueba, ya que es muy simple, incluso si me requirió mucha investigación. No pude encontrar nada similar y es extraño para mí, ya que debería ser la forma más obvia de hacerlo. La documentación sobre RegisterSourceControlProvider también es muy engañosa, por lo que esa puede ser la razón.

+0

Me encantaría probar tu extensión una vez que la publiques. –

+0

¿Cómo puedo reconocer un repositorio de TFS? Nunca he trabajado con eso. – ceztko

+0

Probablemente tengas que usar la API TFS. No agrega ninguna carpeta oculta o especial a su estructura de directorio. –

Cuestiones relacionadas