Làm thế nào để tạo giải pháp dưới dạng bản sao sạch mà không cần ánh xạ tới TFS? Vấn đề là thông báo này hiển thị khi tôi đang cố mở nó. Tôi muốn mở nó như bình thường mà không cần kết nối TFS.
Làm thế nào để tạo giải pháp dưới dạng bản sao sạch mà không cần ánh xạ tới TFS? Vấn đề là thông báo này hiển thị khi tôi đang cố mở nó. Tôi muốn mở nó như bình thường mà không cần kết nối TFS.
Câu trả lời:
Nếu bạn muốn tách vĩnh viễn và hoàn toàn giải pháp khỏi kiểm soát nguồn, hãy thử các cách sau:
Lần tới khi mở giải pháp, bạn sẽ không được nhắc kết nối với TFS.
Để loại bỏ hoàn toàn ràng buộc điều khiển nguồn TFS, hãy làm theo hai bước sau:
*.vssscc
và *.vspscc
phần mở rộng..sln
tệp giải pháp của bạn trong Notepad, tìm và xóa GlobalSection(TeamFoundationVersionControl)
phần này.Thông tin chi tiết về liên kết tham khảo
Chỉnh sửa tệp giải pháp và xóa phần sau khỏi nó. Nó sẽ không giống nhau nhưng sẽ tương tự.
Lưu ý : Để chỉnh sửa tệp giải pháp, hãy chuyển đến thư mục dự án, sau đó mở YouSolutionName.sln
tệp bằng notepad.
GlobalSection(TeamFoundationVersionControl) = preSolution
SccNumberOfProjects = 2
SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}
SccTeamFoundationServer = <YourTFSURL>
SccLocalPath0 = .
SccProjectUniqueName1 = .
SccLocalPath1 = .
EndGlobalSection
Tôi không có đủ danh tiếng để nhận xét, nhưng chỉ muốn nói thêm rằng giải pháp của Tabish trên thực tế hoạt động chính xác để xóa hoàn toàn giải pháp khỏi kiểm soát nguồn, đặc biệt là khi máy chủ TFS không thể truy cập được vì lý do này hay lý do khác (ví dụ: bạn đã tải xuống dự án mà tác giả đã không xóa khỏi kiểm soát nguồn của riêng họ trước khi tải lên).
Tuy nhiên, để xóa hoàn toàn tất cả các dấu vết của kiểm soát nguồn khỏi dự án và tránh các cảnh báo được ghi chú trong các nhận xét khác cho câu trả lời đó (ví dụ: "Không thể tìm thấy ánh xạ cho giải pháp ..."), bạn cũng phải xóa các dòng sau từ mọi tệp dự án trong giải pháp (dường như những dòng này từng có trong tệp giải pháp trong các phiên bản VS trước đó, nhưng trong VS2017, chúng được tìm thấy trong tệp dự án cho từng dự án trong giải pháp - ví dụ: [dự án] .csproj):
SccProjectName = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
SccAuxPath = "x"
SccLocalPath = "xxx"
SccProvider = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Cảm ơn câu trả lời được đánh dấu và các nhận xét khác ở đây vì đã chỉ ra điều này:
nguồn trực quan an toàn - cách xóa các ràng buộc khỏi giải pháp khi mở trong studio trực quan
Kết hợp điều này với câu trả lời của Tabish dường như là phương pháp hoàn chỉnh nhất để xóa thủ công giải pháp khỏi kiểm soát nguồn.
Để loại bỏ ràng buộc, bạn có thể sử dụng Visual Studio: Menu File / Source Control / Advanced / Change Source Control.
Bạn cũng có thể tự làm điều đó bằng cách xóa mọi SCC ... khỏi sln và csproj.
Nếu bạn thường xuyên xuất các tệp nguồn, bạn có thể sử dụng ExportSrc . Nó có nhiều tùy chọn như loại bỏ ràng buộc TFS (ON theo mặc định).
Hầu hết các câu trả lời đều cung cấp giải pháp, nhưng tôi muốn sử dụng giải pháp do Visual Studio 2017 cung cấp.
Trên thanh Menu của Visual Studio, đi tới Nhóm và chọn Ngắt kết nối khỏi Máy chủ Team Foundation . Đó là nó.
Tôi vừa thừa kế một bộ sưu tập các dự án TeamFoundation sau khi mua lại và chuyển giao công nghệ. Có hơn 30 giải pháp và một lượng lớn các tệp * .vssscc và * .vspscc.
Dựa trên đầu vào của mọi người ở trên, tôi đã viết một hàm PowerShell để đệ quy một thư mục gốc được chỉ định, xóa các tệp, sau đó chỉnh sửa các tệp giải pháp để loại bỏ phần TeamFoundationVersionControl.
Cách sử dụng là Remove_TFSfiles "pathname" $booleanflag
.
Để xem những tệp nào sẽ bị ảnh hưởng, hãy sử dụng $false
(using -whatif):
Remove_TFSfiles "C:\MyDevFolder" $false
Để thực sự xóa các tệp đó, hãy sử dụng $true
:
Remove_TFSfiles "C:\MyDevFolder" $true
Đây là chức năng:
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"
}
}
}