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.
Wenn Sie die Lösung dauerhaft und vollständig von der Quellcodeverwaltung trennen möchten, versuchen Sie Folgendes:
Beim nächsten Öffnen der Lösung werden Sie nicht aufgefordert, eine Verbindung zu TFS herzustellen.
Gehen Sie folgendermaßen vor, um die Bindung der TFS-Quellcodeverwaltung vollständig zu entfernen:
*.vssscc
und *.vspscc
..sln
-Datei Ihrer Lösung in Notepad, und suchen Sie den Abschnitt GlobalSection(TeamFoundationVersionControl)
, und entfernen Sie ihn.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
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.
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).
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 .
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"
}
}
}