Entfernen Sie die TFS-Verbindung aus der Lösung

82

Wie mache ich eine Lösung als saubere Kopie ohne Zuordnung zu TFS? Das Problem ist, dass diese Meldung angezeigt wird, wenn ich versuche, sie zu öffnen. Ich möchte es wie gewohnt ohne TFS-Verbindung öffnen.

Geben Sie hier die Bildbeschreibung ein

der Meister
quelle

Antworten:

51

Wenn Sie die Lösung dauerhaft und vollständig von der Quellcodeverwaltung trennen möchten, versuchen Sie Folgendes:

  1. Klicken Sie auf die Schaltfläche "Nein", um eine Verbindung zu TFS zu vermeiden.
  2. Gehen Sie im Dateimenü zu den Quellcodeverwaltungsoptionen und löschen Sie die Bindungen. Sie möchten speziell Datei - Quellcodeverwaltung - Erweitert - Quellcodeverwaltung ändern ...
  3. Speichern Sie die Lösung.

Wenn Sie die Lösung das nächste Mal öffnen, werden Sie nicht aufgefordert, eine Verbindung zu TFS herzustellen.

Richard Banks
quelle
1
In meinem Fall musste VS2013 verwendet werden, um TFS von einer VS2010-Lösung zu trennen.
bvj
Ich musste Javascript (zum Testen deaktiviert) in Chrome erneut aktivieren, damit diese Option angezeigt wird. Um fair zu sein, erwähnte MSVC das Flashen einer Warnmeldung auf dem TFS-Anmeldebildschirm.
Anthony
Dies funktioniert nicht richtig, da die Bindungsdateien nicht entfernt werden, was es schwierig macht, später wieder eine Verbindung zur Quellcodeverwaltung herzustellen.
Lukos
In meinem Fall ist die Schaltfläche "Trennen" für zwei Einträge deaktiviert.
B. Clay Shannon
1
In VS2017 hat dies keine Auswirkung. Wenn Sie die Lösung das nächste Mal öffnen, müssen Sie erneut "Nicht mit tfs kontaktieren" und "OK" für die folgende Fehlermeldung auswählen.
Gerard
193

Führen Sie die folgenden zwei Schritte aus, um die TFS-Quellcodeverwaltungsbindung vollständig zu entfernen:

  1. Gehen Sie zum Ordner Ihrer Lösung, suchen und löschen Sie alle Dateien mit *.vsssccund *.vspsccErweiterungen.
  2. Öffnen Sie die .slnDatei Ihrer Lösung im Editor und suchen und entfernen Sie den GlobalSection(TeamFoundationVersionControl)Abschnitt.

Weitere Details unter Referenz Link

Tabish Usman
quelle
Hat es auch für mich gelöst. Ich denke, Sie können TFS nicht vollständig aus Visual Studio heraus extrahieren.
Rudy Scoggins
3
Dies funktionierte für mich, außer dass in der Team Foundation-Ausgabe immer noch Folgendes angegeben ist: "Die Zuordnungen für die Lösung wurden nicht gefunden. Die Zuordnungen für die Lösung wurden nicht gefunden. Die aktive Lösung wurde vorübergehend von der Quellcodeverwaltung getrennt, da der Server nicht verfügbar ist Versuchen Sie, die Verbindung zur Quellcodeverwaltung wiederherzustellen, schließen Sie die Lösung und öffnen Sie sie erneut, wenn der Server verfügbar ist. Wenn Sie diese Lösung mit einem anderen Server verbinden möchten, verwenden Sie das Dialogfeld Quellcodeverwaltung ändern. "
EngineerWithJava54321
2
Das hat bei mir funktioniert. Ich habe die Anweisungen auf dem "Referenzlink" befolgt.
Lei Shi
Alle * .vs * -Dateien sind die Lösungs- und Projektordner .
Ourmandave
42

Bearbeiten Sie die Lösungsdatei und entfernen Sie den folgenden Abschnitt. Es wird nicht dasselbe sein, aber es wird ähnlich sein.

Hinweis : Um die Lösungsdatei zu bearbeiten, gehen Sie zum Projektordner und öffnen Sie die YouSolutionName.slnDatei mit dem Editor.

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

Ich habe nicht genug Ruf, um einen Kommentar abzugeben, wollte aber nur hinzufügen, dass Tabishs Lösung tatsächlich korrekt funktioniert, um die Lösung vollständig aus der Quellcodeverwaltung zu entfernen, insbesondere wenn der TFS-Server aus dem einen oder anderen Grund nicht erreichbar ist (z. B. wenn Sie einen heruntergeladen haben) Projekt, das der Autor vor dem Hochladen nicht aus seiner eigenen Quellcodeverwaltung entfernt hat).

Um jedoch alle Spuren der Quellcodeverwaltung vollständig aus dem Projekt zu entfernen und die Warnungen zu vermeiden, die in den anderen Kommentaren zu dieser Antwort vermerkt sind (z. B. "Die Zuordnungen für die Lösung konnten nicht gefunden werden ..."), müssen Sie auch die entfernen Die folgenden Zeilen aus jeder Projektdatei in der Lösung (anscheinend befanden sich diese in früheren Versionen von VS in der Lösungsdatei, aber in VS2017 befinden sie sich in der Projektdatei für jedes Projekt in der Lösung - z. B. [Projekt] .csproj):

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

Vielen Dank an die markierte Antwort und andere Kommentare hier für den Hinweis:

Visual Source Safe - Entfernen von Bindungen aus der Lösung ohne Öffnen in Visual Studio

Die Kombination mit Tabishs Antwort scheint die vollständigste Methode zu sein, um eine Lösung manuell aus der Quellcodeverwaltung zu entfernen.

dwillis77
quelle
8
  • Um die Bindung zu entfernen, können Sie Visual Studio verwenden: Menü Datei / Quellcodeverwaltung / Erweitert / Quellcodeverwaltung ändern.

  • Sie können dies auch selbst tun, indem Sie SCC ... aus sln und csproj entfernen.

  • Wenn Sie häufig Quelldateien exportieren, können Sie ExportSrc verwenden . Es gibt viele Optionen wie das Entfernen der TFS-Bindung (standardmäßig aktiviert).

Meziantou
quelle
4

Die meisten Antworten lieferten eine Lösung, aber ich würde lieber eine Lösung von Visual Studio 2017 verwenden.

Gehen Sie in der Menüleiste von Visual Studio zu Team und wählen Sie Verbindung vom Team Foundation Server trennen . Das ist es.

Abubakar Ahmad
quelle
2
Es schließt nur Ihre Lösung ..?
Januar 4co
0

Ich habe gerade eine Sammlung von TeamFoundation-Projekten nach einem M & A-Buyout und einem Technologietransfer geerbt. Es gab mehr als 30 Lösungen und eine Menge * .vssscc- und * .vspscc-Dateien.

Basierend auf den obigen Eingaben aller habe ich eine PowerShell-Funktion geschrieben, um einen angegebenen Stammordner zu rekursieren, die Dateien zu löschen und dann die Lösungsdateien zu bearbeiten, um den Abschnitt TeamFoundationVersionControl zu entfernen.

Verwendung ist Remove_TFSfiles "pathname" $booleanflag.

Verwenden Sie $false(verwendet -whatif) , um zu sehen, welche Dateien betroffen sind :

Remove_TFSfiles "C:\MyDevFolder" $false

Verwenden Sie zum Löschen dieser Dateien Folgendes $true:

Remove_TFSfiles "C:\MyDevFolder" $true

Hier ist die Funktion:

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 bei HotspotOffice
quelle