wake-up-neo.com

Entfernen Sie die TFS-Verbindung aus der Lösung

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 ganz normal ohne TFS-Verbindung öffnen. 

enter image description here

52
theChampion

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 die Verbindung zu TFS zu vermeiden.
  2. Wechseln Sie im Dateimenü zu den Optionen für die Quellcodeverwaltung und löschen Sie die Bindungen. Sie möchten insbesondere Datei - Quellcodeverwaltung - Erweitert - Quellcodeverwaltung ändern ...
  3. Speichern Sie die Lösung.

Beim nächsten Öffnen der Lösung werden Sie nicht aufgefordert, eine Verbindung zu TFS herzustellen.

33
Richard Banks

Gehen Sie folgendermaßen vor, um die Bindung der TFS-Quellcodeverwaltung vollständig zu entfernen:

  1. Wechseln Sie in den Ordner Ihrer Lösung und suchen und löschen Sie alle Dateien mit den Erweiterungen *.vssscc und *.vspscc.
  2. Öffnen Sie die .sln-Datei Ihrer Lösung in Notepad, und suchen Sie den Abschnitt GlobalSection(TeamFoundationVersionControl), und entfernen Sie ihn.

Referenzlink

128
Tabish Usman

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

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

Ich habe nicht genug Ruf, um einen Kommentar abzugeben, wollte aber nur hinzufügen, dass die Lösung von Tabish tatsächlich korrekt funktioniert, um die Lösung vollständig aus der Quellcodeverwaltung zu entfernen, insbesondere wenn der TFS-Server aus irgendeinem Grund nicht erreichbar ist (z 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 das folgende Zeilen aus jeder Projektdatei in der Projektmappe (offenbar waren diese in früheren Versionen von VS in der Projektmappe enthalten, in VS2017 sind sie jedoch für jedes Projekt in der Projektmappe in der Projektdatei zu finden - zB [Projekt]) .csproj):

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

Danke an die markierte Antwort und andere Kommentare, die hier darauf hingewiesen wurden:

visuelle quellensicher - Entfernen von Bindungen aus der Lösung ohne Öffnen im visuellen Studio

Dies mit der Antwort von Tabish zu kombinieren, scheint die umfassendste Methode zum manuellen Entfernen einer Lösung aus der Quellcodeverwaltung zu sein.

13
dwillis77
  • 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 alle SCCs von sln und csproj entfernen.

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

8
meziantou

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 Trennen Sie die Verbindung zum Team Foundation Server .

1
Abubakar Ahmad

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

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

Verwendung ist Remove_TFSfiles "pathname" $booleanflag

Um zu sehen, welche Dateien betroffen sein würden, verwenden Sie $ false (verwendet -whatif).

Remove_TFSfiles "C:\MyDevFolder" $false

Um diese Dateien tatsächlich zu löschen, verwenden Sie $ 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) {
    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"
    }
}

}