¿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.
¿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.
Respuestas:
Si desea separar de forma permanente y completa la solución del control de fuente, intente lo siguiente:
La próxima vez que abra la solución, no se le pedirá que se conecte a TFS.
Para eliminar completamente el enlace de control de origen de TFS, siga estos dos pasos:
*.vssscc
y *.vspscc
extensiones..sln
archivo 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
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.sln
archivo con el bloc de notas.
GlobalSection(TeamFoundationVersionControl) = preSolution
SccNumberOfProjects = 2
SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}
SccTeamFoundationServer = <YourTFSURL>
SccLocalPath0 = .
SccProjectUniqueName1 = .
SccLocalPath1 = .
EndGlobalSection
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.
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).
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.
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"
}
}
}