Подтвердить что ты не робот

Удалить соединение TFS из решения

Как сделать решение чистой копией без сопоставления с TFS? Проблема в том, что это сообщение показывает, когда я пытаюсь его открыть. Я хочу открыть его, как обычно, без подключения TFS.

enter image description here

4b9b3361

Ответ 1

Если вы хотите окончательно и полностью отсоединить решение от источника управления, попробуйте следующее:

  • Нажмите кнопку "Нет", чтобы избежать подключения к TFS.
  • В меню файла перейдите к параметрам управления источником и очистите привязки. Вы специально хотите, чтобы File - Source Control - Advanced - Change Source Control...
  • Сохраните решение.

В следующий раз, когда вы откроете решение, вам не будет предложено подключиться к TFS.

Ответ 2

Чтобы полностью удалить привязку управления исходным кодом TFS, выполните следующие два шага:

  1. Перейдите в папку вашего решения, найдите и удалите все файлы с *.vssscc и *.vspscc.
  2. Откройте файл решения .sln в Блокноте, найдите и удалите раздел GlobalSection(TeamFoundationVersionControl).

Ссылка Ссылка

Ответ 3

Отредактируйте файл решения и удалите из него следующий раздел. Это будет не то же самое, но будет похоже.

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

Ответ 4

У меня недостаточно репутации, чтобы комментировать, но я просто хотел добавить, что решение Tabish на самом деле работает правильно, чтобы полностью удалить решение из системы контроля версий, особенно когда сервер TFS недоступен по той или иной причине (например, вы загрузили проект, который автор не удалял из собственного источника контроля перед загрузкой).

Однако, чтобы полностью удалить все следы управления исходным кодом из проекта и избежать предупреждений, отмеченных в других комментариях к этому ответу (например, "Не удалось найти сопоставления для решения..."), необходимо также удалить следующие строки из каждого файла проекта в решении (очевидно, они были в файле решения в более ранних версиях VS, но в VS2017 они находятся в файле проекта для каждого проекта в решении - например, [проект].csproj):

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

Спасибо за отмеченный ответ и другие комментарии здесь для указания на это:

визуальный источник безопасен - как удалить привязки из решения без открытия в visual studio

Объединение этого с ответом Табиша представляется наиболее полным методом ручного удаления решения из системы контроля версий.

Ответ 5

  • Чтобы удалить привязку, вы можете использовать Visual Studio: Файл меню/Управление источником/Дополнительно/Изменить контроль источника.

  • Вы также можете сделать это сами, удалив любой SCC... из sln и csproj.

  • Если вы часто экспортируете исходные файлы, вы можете использовать ExportSrc. Он имеет множество опций, таких как удаление привязки TFS (по умолчанию включено по умолчанию).

Ответ 6

Большинство ответов предоставили решение, но я бы предпочел использовать решение, предоставленное Visual Studio 2017.

В строке меню Visual Studio перейдите в Team и выберите Disconnect from Team Foundation Server. Это.

Ответ 7

Я просто унаследовал коллекцию проектов TeamFoundation после выкупа M & A и передачи технологий. Были как 30+ решения, так и куча файлов *.vssscc и *.vspscc.

Основываясь на каждом из приведенных выше входных данных, я написал функцию powershell, чтобы обработать указанную корневую папку, удалить файлы, а затем отредактировать файлы решения, удалив раздел TeamFoundationVersionControl.

Использование 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) {
    dir -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)
        sp $slnFilename IsReadOnly $false
        $result | set-content $slnFilename 
        write-host "Done"
    }
    write-host -f red "Finished actually removing files and editing *.sln files"
} else {
    dir -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"
    }
}

}