Eliminar la conexión TFS de la solución


82

¿Cómo hacer una solución como copia limpia sin mapear a TFS? El problema es que este mensaje aparece cuando intento abrirlo. Quiero abrirlo normalmente sin conexión TFS.

ingrese la descripción de la imagen aquí

Respuestas:


50

Si desea separar de forma permanente y completa la solución del control de fuente, intente lo siguiente:

  1. Haga clic en el botón 'No' para evitar conectarse a TFS.
  2. En el menú de archivo, vaya a las opciones de control de código fuente y borre los enlaces. Específicamente, querrá Archivo - Control de fuente - Avanzado - Cambiar control de fuente ...
  3. Guarde la solución.

La próxima vez que abra la solución, no se le pedirá que se conecte a TFS.


1
En mi caso, fue necesario usar VS2013 para disociar TFS de una solución VS2010.
bvj

Tuve que volver a habilitar Javascript (desactivado para pruebas) en Chrome para que se mostrara esta opción. Para ser justos, MSVC mencionó un mensaje de advertencia en la pantalla de inicio de sesión de TFS.
Anthony

Esto no funciona correctamente porque no elimina los archivos de enlaces, lo que dificulta la reconexión al control de código fuente más adelante.
Lukos

En mi caso, el botón "Desconectar" está desactivado, para dos entradas.
B. Clay Shannon

1
En VS2017 esto no tiene ningún efecto, la próxima vez que abra la solución tendrá que elegir nuevamente 'no contactar tfs' y 'ok' en el mensaje de error que sigue.
Gerard

192

Para eliminar completamente el enlace de control de origen de TFS, siga estos dos pasos:

  1. Ir a la carpeta de su solución, encontrar y eliminar todos los archivos con *.vsssccy *.vspsccextensiones.
  2. Abra el .slnarchivo de su solución en el Bloc de notas y busque y elimine la GlobalSection(TeamFoundationVersionControl)sección.

Más detalles sobre el enlace de referencia


También lo resolvió para mí. Supongo que no se puede extraer completamente TFS solo desde Visual Studio.
Rudy Scoggins

3
Esto funcionó para mí, excepto que el resultado de Team Foundation todavía dice: "No se pudieron encontrar las asignaciones para la solución. No se pudieron encontrar las asignaciones para la solución. La solución activa se desconectó temporalmente del control de origen porque el servidor no está disponible. Para intente volver a conectarse al control de código fuente, cierre y vuelva a abrir la solución cuando el servidor esté disponible. Si desea conectar esta solución a otro servidor, utilice el cuadro de diálogo Cambiar control de código fuente ".
EngineerWithJava54321

2
Esto funcionó para mí. Seguí las instrucciones del "enlace de referencia".
Lei Shi

Todos los archivos * .vs * significan las carpetas de soluciones y proyectos.
ourmandave

42

Edite el archivo de la solución y elimine la siguiente sección. No será lo mismo, pero será similar.

Nota : Para editar el archivo de la solución, vaya a la carpeta del proyecto y luego abra el YouSolutionName.slnarchivo con el bloc de notas.

GlobalSection(TeamFoundationVersionControl) = preSolution
    SccNumberOfProjects = 2
    SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}
    SccTeamFoundationServer = <YourTFSURL>
    SccLocalPath0 = .
    SccProjectUniqueName1 = .
    SccLocalPath1 = .
EndGlobalSection

19

No tengo suficiente reputación para comentar, pero solo quería agregar que la solución de Tabish de hecho funciona correctamente para eliminar completamente la solución del control de fuente, especialmente cuando el servidor TFS no es accesible por una razón u otra (por ejemplo, descargó un proyecto que el autor no eliminó de su propio control de código fuente antes de cargar).

Sin embargo, para eliminar por completo todos los rastros de control de código fuente del proyecto y evitar las advertencias que se indican en los otros comentarios a esa respuesta (por ejemplo, "No se pudieron encontrar las asignaciones para la solución ..."), también debe eliminar el siguientes líneas de cada archivo de proyecto en la solución (aparentemente, estos solían estar en el archivo de solución en versiones anteriores de VS, pero en VS2017 se encuentran en el archivo de proyecto para cada proyecto en la solución, por ejemplo, [proyecto] .csproj):

SccProjectName = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
SccAuxPath = "x"
SccLocalPath = "xxx"
SccProvider = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Gracias a la respuesta marcada y otros comentarios aquí por señalar esto:

seguro de fuente visual: cómo eliminar enlaces de la solución sin abrir en Visual Studio

Combinar esto con la respuesta de Tabish parece ser el método más completo para eliminar manualmente una solución del control de fuente.


8
  • Para eliminar el enlace, puede usar Visual Studio: Menú Archivo / Control de fuente / Avanzado / Cambiar control de fuente.

  • También puede hacerlo usted mismo eliminando cualquier SCC ... de sln y csproj.

  • Si exporta archivos de origen con frecuencia, puede utilizar ExportSrc . Tiene muchas opciones, como eliminar el enlace TFS (activado de forma predeterminada).


4

La mayoría de las respuestas proporcionaron una solución, pero prefiero usar una solución proporcionada por Visual Studio 2017.

En la barra de menú de Visual Studio, vaya a Equipo y seleccione Desconectar de Team Foundation Server . Eso es.


2
¿Solo cierra tu solución ..?
jan4co

0

Acabo de heredar una colección de proyectos de TeamFoundation luego de una compra de M&A y transferencia de tecnología. Había más de 30 soluciones y una gran cantidad de archivos * .vssscc y * .vspscc.

Basado en la entrada de todos arriba, escribí una función de PowerShell para recurrir a una carpeta raíz específica, eliminar los archivos y luego editar los archivos de la solución para eliminar la sección TeamFoundationVersionControl.

El uso es Remove_TFSfiles "pathname" $booleanflag.

Para ver qué archivos se verían afectados, use $false(uses -whatif):

Remove_TFSfiles "C:\MyDevFolder" $false

Para eliminar esos archivos, use $true:

Remove_TFSfiles "C:\MyDevFolder" $true

Esta es la función:

Function Remove_TFSfiles { 
    param(
        [string]$FolderName = $(throw "-FolderName is required."),
        [bool]$RemoveFiles = $(throw "-RemoveFiles (either $true or $false) is required.")
    )
    $TFSExtensions = '*.vspscc', '*.vssscc'                          

    if ($RemoveFiles) {
        Get-ChildItem -path $FolderName -force -include $TFSExtensions -Recurse | Remove-Item -Force        
        # Now iterate through any solution files, and whack the TeamFoundationVersionControl section
        Get-ChildItem -Path $FolderName -Filter "*.sln" -Recurse | ForEach-Object {
            $slnFilename = $_.Fullname
            Write-Host -NoNewline "Editing $slnFilename... "
            $File = Get-Content $slnFilename -raw
            $Filestr = [regex]::escape("" + $File + "")
            # The regex escapes must themselves be meta-escaped, therefore "\(" becomes "\\" + "\(" = "\\\(". Did I mention I hate regex?
            $Result = $Filestr -replace "\\tGlobalSection\\\(TeamFoundationVersionControl\\\).*?EndGlobalSection\\r\\n", ""
            $result = [regex]::unescape($result)
            Set-ItemProperty $slnFilename IsReadOnly $false
            $result | Set-Content $slnFilename 
            Write-Host "Done"
        }
        Write-Host -f red "Finished actually removing files and editing *.sln files"
    }
    else {
        Get-ChildItem -path $FolderName -force -include $TFSExtensions -Recurse | Remove-Item -WhatIf
        Write-Host -f green "Finished pretending to remove files"
        # Now iterate through any solution files, and whack the TeamFoundationVersionControl section
        Get-ChildItem -Path $FolderName -Filter "*.sln" -Recurse | ForEach-Object {
            $slnFilename = $_.Fullname 
            Write-Host "Not Editing $slnFilename"
        }
    }
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.