Usuń połączenie TFS z rozwiązania

82

Jak stworzyć rozwiązanie jako czystą kopię bez mapowania na TFS? Problem polega na tym, że ten komunikat pojawia się, gdy próbuję go otworzyć. Chcę otworzyć go jak zwykle bez połączenia TFS.

wprowadź opis obrazu tutaj

mistrz
źródło

Odpowiedzi:

51

Jeśli chcesz trwale i całkowicie odłączyć rozwiązanie od kontroli źródła, wypróbuj następujące rozwiązania:

  1. Kliknij przycisk „Nie”, aby uniknąć łączenia się z TFS.
  2. W menu plików przejdź do opcji kontroli źródła i wyczyść powiązania. Będziesz szczególnie chciał Plik - Kontrola źródła - Zaawansowane - Zmień kontrolę źródła ...
  3. Zapisz rozwiązanie.

Następnym razem, gdy otworzysz rozwiązanie, nie zostanie wyświetlony monit o połączenie z TFS.

Richard Banks
źródło
1
W moim przypadku konieczne było użycie VS2013 do odłączenia TFS od rozwiązania VS2010.
bvj
Musiałem ponownie włączyć Javascript (wyłączony do testów) w Chrome, aby ta opcja była wyświetlana. Aby być uczciwym, firma MSVC wspomniała o flashowaniu komunikatu ostrzegawczego na ekranie logowania TFS.
Anthony
To nie działa poprawnie, ponieważ nie usuwa plików powiązań, co utrudnia późniejsze ponowne połączenie z kontrolą źródła.
Lukos
W moim przypadku przycisk „Rozłącz” jest wyłączony dla dwóch wpisów.
B. Clay Shannon
1
W VS2017 nie ma to żadnego efektu, następnym razem, gdy otworzysz rozwiązanie, będziesz musiał ponownie wybrać opcję „nie kontaktuj się z tfs” i „ok”, aby wyświetlić następujący komunikat o błędzie.
Gerard
193

Aby całkowicie usunąć powiązanie kontroli źródła TFS, wykonaj następujące dwa kroki:

  1. Przejdź do folderu rozwiązania, znajdź i usuń wszystkie pliki z rozszerzeniami *.vssscci *.vspscc.
  2. Otwórz .slnplik rozwiązania w Notatniku, znajdź i usuń GlobalSection(TeamFoundationVersionControl)sekcję.

Więcej szczegółów na temat odniesienia link

Tabish Usman
źródło
Rozwiązałem to również dla mnie. Wydaje mi się, że nie można w pełni wyodrębnić TFS z samego programu Visual Studio.
Rudy Scoggins
3
To zadziałało w moim przypadku, z wyjątkiem tego, że w wynikach Team Foundation nadal jest wyświetlany komunikat „Nie można znaleźć mapowań rozwiązania. Nie można znaleźć mapowań rozwiązania. Aktywne rozwiązanie zostało tymczasowo odłączone od kontroli źródła, ponieważ serwer jest niedostępny. Aby spróbuj ponownie połączyć się z kontrolą źródła, zamknij, a następnie ponownie otwórz rozwiązanie, gdy serwer będzie dostępny. Jeśli chcesz połączyć to rozwiązanie z innym serwerem, użyj okna dialogowego Zmień kontrolę źródła ”.
EngineerWithJava54321
2
To zadziałało dla mnie. Postępowałem zgodnie z instrukcjami podanymi w „odnośniku referencyjnym”.
Lei Shi
Wszystkie pliki * .vs * oznaczają foldery rozwiązań i projektów.
ourmandave
42

Edytuj plik rozwiązania i usuń z niego następującą sekcję. To nie będzie to samo, ale będzie podobne.

Uwaga : aby edytować plik rozwiązania, przejdź do folderu projektu, a następnie otwórz YouSolutionName.slnplik w notatniku.

GlobalSection(TeamFoundationVersionControl) = preSolution
    SccNumberOfProjects = 2
    SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}
    SccTeamFoundationServer = <YourTFSURL>
    SccLocalPath0 = .
    SccProjectUniqueName1 = .
    SccLocalPath1 = .
EndGlobalSection
Hamid Shahid
źródło
19

Nie mam wystarczającej reputacji, aby komentować, ale chciałem tylko dodać, że rozwiązanie Tabish w rzeczywistości działa poprawnie, całkowicie usuwając rozwiązanie z kontroli źródła, zwłaszcza gdy serwer TFS jest nieosiągalny z tego czy innego powodu (np. Pobrałeś plik projekt, którego autor nie usunął z własnej kontroli źródła przed przesłaniem).

Aby jednak całkowicie usunąć wszystkie ślady kontroli źródła z projektu i uniknąć ostrzeżeń, które są odnotowane w innych komentarzach do tej odpowiedzi (np. „Nie można znaleźć mapowań rozwiązania ...”), należy również usunąć następujące wiersze z każdego pliku projektu w rozwiązaniu (najwyraźniej znajdowały się one w pliku rozwiązania we wcześniejszych wersjach VS, ale w VS2017 znajdują się w pliku projektu dla każdego projektu w rozwiązaniu - np. [projekt] .csproj):

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

Dzięki zaznaczonej odpowiedzi i innym komentarzom za zwrócenie na to uwagi:

Visual Source Safe - jak usunąć wiązania z rozwiązania bez otwierania w Visual Studio

Połączenie tego z odpowiedzią Tabish wydaje się być najbardziej kompletną metodą ręcznego usuwania rozwiązania z kontroli źródła.

dwillis77
źródło
8
  • Aby usunąć powiązanie, możesz użyć programu Visual Studio: menu Plik / Kontrola źródła / Zaawansowane / Zmień kontrolę źródła.

  • Możesz także zrobić to samodzielnie, usuwając dowolny SCC ... ze sln i csproj.

  • Jeśli często eksportujesz pliki źródłowe, możesz użyć ExportSrc . Ma wiele opcji, takich jak usuwanie powiązania TFS (domyślnie włączone).

meziantou
źródło
4

Większość odpowiedzi zawierało rozwiązanie, ale wolałbym skorzystać z rozwiązania dostarczonego przez Visual Studio 2017.

Na pasku menu programu Visual Studio przejdź do zespołu i wybierz opcję Odłącz od Team Foundation Server . Otóż ​​to.

Abubakar Ahmad
źródło
2
To tylko zamyka twoje rozwiązanie ..?
jan4co
0

Właśnie odziedziczyłem kolekcję projektów TeamFoundation po wykupie M&A i transferze technologii. Było około 30 rozwiązań i mnóstwo plików * .vssscc i * .vspscc.

Opierając się na danych wszystkich powyżej, napisałem funkcję PowerShell, aby powtórzyć określony folder główny, usunąć pliki, a następnie edytować pliki rozwiązania, aby usunąć sekcję TeamFoundationVersionControl.

Wykorzystanie jest Remove_TFSfiles "pathname" $booleanflag.

Aby zobaczyć, które pliki zostaną dotknięte, użyj $false(używa -whatif):

Remove_TFSfiles "C:\MyDevFolder" $false

Aby faktycznie usunąć te pliki, użyj $true:

Remove_TFSfiles "C:\MyDevFolder" $true

Oto funkcja:

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"
        }
    }
}
David w HotspotOffice
źródło