Видаліть підключення TFS із рішення


83

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

введіть тут опис зображення

Відповіді:


51

Якщо ви хочете остаточно і повністю від'єднати рішення від джерела контролю, спробуйте наступне:

  1. Натисніть кнопку «Ні», щоб уникнути підключення до TFS.
  2. У меню файлу перейдіть до параметрів керування джерелом і очистіть прив’язки. Вам знадобиться Файл - Керування джерелом - Додатково - Змінити контроль джерела ...
  3. Збережіть рішення.

Наступного разу, коли ви відкриєте рішення, вам не буде запропоновано підключитися до TFS.


1
У моєму випадку було потрібно використовувати VS2013, щоб відмежувати TFS від рішення VS2010.
bvj

Мені довелося знову ввімкнути Javascript (вимкнений для тестування) в Chrome, щоб відобразити цю опцію. Чесно кажучи, MSVC згадав попереджувальне повідомлення про спалах у журналі TFS на екрані.
Ентоні

Це не працює належним чином, оскільки не видаляє файли прив'язок, що ускладнює можливість повторного підключення до керування джерелом пізніше.
Лукос,

У моєму випадку кнопка "Відключити" відключена для двох записів.
Б. Клей Шеннон

2
У VS2017 це не впливає, наступного разу, коли ви відкриєте рішення, вам знову доведеться вибрати "не зв'язуватися з tfs" та "добре" для повідомлення про помилку, яке випливає далі.
Джерард

194

Щоб повністю видалити прив’язку керування джерелом TFS, виконайте наступні два кроки:

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

Детальніше за посиланням Посилання


Вирішив це і для мене. Я думаю, ви не можете повністю витягти TFS лише з Visual Studio.
Руді Скоггінс,

3
Це спрацювало для мене, за винятком результатів роботи Team Foundation, які досі кажуть: "Зіставлення рішення не вдалося знайти. Зіставлення рішення не вдалося знайти. Активне рішення тимчасово відключено від контролю джерела, оскільки сервер недоступний. спробуйте підключитися до джерела керування, закрийте, а потім знову відкрийте рішення, коли сервер доступний. Якщо ви хочете підключити це рішення до іншого сервера, скористайтеся діалоговим вікном Змінити контроль джерела. "
EngineerWithJava54321

2
Це спрацювало для мене. Я дотримувався вказівок на "посилальному посиланні".
Лей Ши

Усі файли * .vs * означають папки рішення та проекту.
ourmandave

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 вони знаходяться у файлі проекту для кожного проекту у рішенні - наприклад, [проект] .csproj):

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

Дякуємо позначеній відповіді та іншим коментарям за те, що вказуємо на це:

візуальне джерело безпечне - як видалити прив'язки з розчину без відкриття у візуальній студії

Поєднання цього з відповіддю Табіша представляється найбільш повним методом ручного видалення рішення з контролю джерела.


8
  • Щоб видалити прив'язку, можна скористатися Visual Studio: Файл меню / Керування джерелом / Додатково / Змінити контроль джерела.

  • Ви також можете зробити це самостійно, видаливши будь-який SCC ... зі sln та csproj.

  • Якщо ви часто експортуєте вихідні файли, ви можете використовувати ExportSrc . У ньому є багато опцій, таких як видалення прив'язки TFS (увімкнено за замовчуванням).


4

Більшість відповідей давали рішення, але я б скоріше використовував рішення, яке надає Visual Studio 2017.

На панелі меню Visual Studio перейдіть до команди та виберіть Від'єднати від Team Foundation Server . Це воно.


2
Це лише закриває ваше рішення ..?
jan4co

0

Я щойно успадкував колекцію проектів TeamFoundation після викупу злиттів та поглинань та передачі технологій. Було близько 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) {
        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"
        }
    }
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.