[visual-studio] 솔루션에서 TFS 연결 제거

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

여기에 이미지 설명 입력



답변

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

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

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


답변

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

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

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


답변

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

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

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


답변

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

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

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

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

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

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


답변

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

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

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


답변

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

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


답변

저는 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"
        }
    }
}