솔루션에서 TFS 연결 제거


82

TFS에 매핑하지 않고 솔루션을 깨끗한 복사본으로 만드는 방법은 무엇입니까? 문제는이 메시지를 열려고 할 때 표시된다는 것입니다. TFS 연결없이 정상적으로 열고 싶습니다.

여기에 이미지 설명 입력

답변:


50

소스 제어에서 솔루션을 영구적으로 완전히 분리하려면 다음을 시도하십시오.

  1. TFS에 연결하지 않으려면 '아니오'버튼을 클릭하십시오.
  2. 파일 메뉴에서 소스 제어 옵션으로 이동하여 바인딩을 지 웁니다. 특히 파일-소스 제어-고급-소스 제어 변경 ...을 원할 것입니다.
  3. 솔루션을 저장하십시오.

다음에 솔루션을 열면 TFS에 연결하라는 메시지가 표시되지 않습니다.


1
제 경우에는 VS2013을 사용하여 VS2010 솔루션에서 TFS를 분리해야했습니다.
bvj

이 옵션을 표시하려면 Chrome에서 Javascript (테스트를 위해 꺼져 있음)를 다시 활성화해야했습니다. 공정하게 MSVC는 TFS 로그온 화면에 경고 메시지를 표시했습니다.
Anthony

바인딩 파일을 제거하지 않아 나중에 소스 제어에 다시 연결하기 어렵 기 때문에 제대로 작동하지 않습니다.
Lukos

제 경우에는 두 항목에 대해 "연결 해제"버튼이 비활성화되어 있습니다.
B. 클레이 섀넌

1
VS2017에서는 효과가 없으며 다음에 솔루션을 열 때 다음 오류 메시지에 대해 'tfs에 연락하지 않음'및 '확인'을 다시 선택해야합니다.
Gerard

192

TFS 소스 제어 바인딩을 완전히 제거하려면 다음 두 단계를 수행하십시오.

  1. 솔루션의 폴더로 이동하여 *.vssscc*.vspscc확장자가있는 모든 파일을 찾아 삭제하십시오 .
  2. .sln메모장에서 솔루션 파일을 열고 GlobalSection(TeamFoundationVersionControl)섹션을 찾아 제거합니다 .

참조 링크 에 대한 자세한 내용


나를 위해 해결했습니다. Visual Studio 내에서만 TFS를 완전히 추출 할 수 없다고 생각합니다.
Rudy Scoggins

3
이것은 Team Foundation 출력에서 ​​여전히 "솔루션에 대한 매핑을 찾을 수 없습니다. 솔루션에 대한 매핑을 찾을 수 없습니다. 서버를 사용할 수 없기 때문에 활성 솔루션이 소스 제어에서 일시적으로 연결이 끊어졌습니다. 소스 제어에 다시 연결을 시도하고 서버를 사용할 수있을 때 솔루션을 닫았다가 다시 엽니 다.이 솔루션을 다른 서버에 연결하려면 소스 제어 변경 대화 상자를 사용하십시오. "
EngineerWithJava54321

2
이것은 나를 위해 일했습니다. "참조 링크"의 지침을 따랐습니다.
Lei Shi

모든 * .vs * 파일은 솔루션 프로젝트 폴더를 의미합니다 .
ourmandave dec.

42

솔루션 파일을 편집하고 다음 섹션을 제거하십시오. 동일하지는 않지만 비슷할 것입니다.

참고 : 솔루션 파일을 편집하려면 프로젝트 폴더로 이동 한 다음 YouSolutionName.sln메모장으로 파일 을 엽니 다 .

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

19

저는 논평 할만한 평판이 충분하지 않지만 Tabish의 솔루션이 실제로 올바르게 작동하여 소스 제어에서 솔루션을 완전히 제거한다는 점을 추가하고 싶었습니다. 특히 TFS 서버에 어떤 이유로 든 연결할 수없는 경우 (예 : 작성자가 업로드하기 전에 자신의 소스 제어에서 제거하지 않은 프로젝트).

그러나 프로젝트에서 소스 제어의 모든 흔적을 완전히 제거하고 해당 답변에 대한 다른 주석에 표시된 경고 (예 : "솔루션에 대한 매핑을 찾을 수 없습니다 ...")를 방지하려면 다음을 제거해야합니다. 솔루션의 모든 프로젝트 파일의 다음 줄 (이전 버전 VS의 솔루션 파일에 있었지만 VS2017에서는 솔루션의 각 프로젝트에 대한 프로젝트 파일 (예 : [project] .csproj))에서 찾을 수 있습니다.

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

여기에 표시된 답변과 다른 의견에 감사드립니다.

Visual Source Safe-Visual Studio에서 열기없이 솔루션에서 바인딩을 제거하는 방법

이것을 Tabish의 답변과 결합하는 것이 소스 제어에서 솔루션을 수동으로 제거하는 가장 완벽한 방법 인 것 같습니다.


8
  • 바인딩을 제거하려면 Visual Studio (메뉴 파일 / 소스 제어 / 고급 / 소스 제어 변경)를 사용할 수 있습니다.

  • sln 및 csproj에서 SCC ...를 제거하여 직접 수행 할 수도 있습니다.

  • 소스 파일을 자주 내보내는 경우 ExportSrc 를 사용할 수 있습니다 . TFS 바인딩 제거 (기본적으로 ON)와 같은 많은 옵션이 있습니다.


4

대부분의 답변은 솔루션을 제공했지만 Visual Studio 2017에서 제공하는 솔루션을 사용하고 싶습니다.

Visual Studio의 메뉴 모음에서 Team으로 이동하고 Team Foundation Server 에서 연결 끊기를 선택합니다. 합니다. 그게 다야.


2
그것은 당신의 솔루션을 닫습니다 ..?
jan4co 19.01.08

0

저는 M & A 인수 및 기술 이전에 이어 TeamFoundation 프로젝트 컬렉션을 상속 받았습니다. 30 개 이상의 솔루션과 * .vssscc 및 * .vspscc 파일이 너무 많았습니다.

위의 모든 사람의 입력을 기반으로 지정된 루트 폴더를 반복하고 파일을 삭제 한 다음 솔루션 파일을 편집하여 TeamFoundationVersionControl 섹션을 제거하는 PowerShell 함수를 작성했습니다.

사용법은 Remove_TFSfiles "pathname" $booleanflag 입니다.

영향을받는 파일을 확인하려면 $false(-whatif 사용)을 사용하십시오.

Remove_TFSfiles "C:\MyDevFolder" $false

실제로 해당 파일을 삭제하려면 $true다음을 사용하십시오 .

Remove_TFSfiles "C:\MyDevFolder" $true

기능은 다음과 같습니다.

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"
        }
    }
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.