Çözüm, TFS ile eşleştirmeden temiz kopya olarak nasıl yapılır? Sorun şu ki, onu açmaya çalıştığımda bu mesaj gösteriliyor. TFS bağlantısı olmadan normal şekilde açmak istiyorum.
Yanıtlar:
Çözümü kaynak kontrolünden kalıcı olarak ve tamamen ayırmak istiyorsanız, aşağıdakileri deneyin:
Çözümü bir dahaki sefere açtığınızda, TFS'ye bağlanmanız istenmez.
TFS kaynak denetimi bağlamasını tamamen kaldırmak için şu iki adımı izleyin:
*.vssscc
ve *.vspscc
uzantılara sahip tüm dosyaları bulun ve silin ..sln
dosyasını Not Defteri'nde açın ve GlobalSection(TeamFoundationVersionControl)
bölümü bulun ve kaldırın .Referans Bağlantısı hakkında daha fazla ayrıntı
Çözüm dosyasını düzenleyin ve aşağıdaki bölümü ondan kaldırın. Aynı olmayacak ama benzer olacak.
Not : Çözüm dosyasını düzenlemek için proje klasörüne gidin ve ardından YouSolutionName.sln
dosyayı not defteri ile açın .
GlobalSection(TeamFoundationVersionControl) = preSolution
SccNumberOfProjects = 2
SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}
SccTeamFoundationServer = <YourTFSURL>
SccLocalPath0 = .
SccProjectUniqueName1 = .
SccLocalPath1 = .
EndGlobalSection
Yorum yapmak için yeterli itibarım yok, ancak Tabish'in çözümünün aslında çözümü kaynak kontrolünden tamamen kaldırmak için doğru çalıştığını eklemek istedim, özellikle de TFS sunucusuna şu veya bu nedenle erişilemediğinde (örneğin yazarın yüklemeden önce kendi kaynak kontrolünden kaldırmadığı proje).
Bununla birlikte, projeden kaynak kontrolünün tüm izlerini tamamen kaldırmak ve bu yanıta yönelik diğer yorumlarda belirtilen uyarılardan kaçınmak için (örneğin, "Çözüm için eşlemeler bulunamadı ..."), ayrıca Çözümdeki her proje dosyasından aşağıdaki satırlar (görünüşe göre bunlar VS'nin önceki sürümlerinde çözüm dosyasındaydı, ancak VS2017'de çözümdeki her proje için proje dosyasında bulunuyorlar - örneğin [proje] .csproj):
SccProjectName = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
SccAuxPath = "x"
SccLocalPath = "xxx"
SccProvider = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Bunu işaret ettiğiniz için işaretli cevap ve diğer yorumlar için teşekkürler:
görsel kaynak güvenli - visual studio'da açılmadan çözümden bağlamalar nasıl kaldırılır
Bunu Tabish'in cevabı ile birleştirmek, bir çözümü kaynak kontrolünden manuel olarak kaldırmanın en eksiksiz yöntemi gibi görünüyor.
Bağlamayı kaldırmak için Visual Studio: Menü Dosyası / Kaynak Kontrolü / Gelişmiş / Kaynak Kontrolünü Değiştir'i kullanabilirsiniz.
Ayrıca, herhangi bir SCC'yi ... sln ve csproj'dan kaldırarak kendiniz de yapabilirsiniz.
Sık sık kaynak dosyalarını dışa aktarıyorsanız , ExportSrc'yi kullanabilirsiniz . TFS bağlamayı kaldırma (varsayılan olarak AÇIK) gibi birçok seçeneğe sahiptir.
Yanıtların çoğu bir çözüm sağladı, ancak ben Visual Studio 2017 tarafından sağlanan bir çözümü kullanmayı tercih ederim.
Visual Studio'nun Menü çubuğunda, Takım'a gidin ve Team Foundation Server'dan Bağlantıyı Kes'i seçin . Bu kadar.
Birleşme ve satın almanın ve teknoloji transferinin ardından TeamFoundation projelerinin bir koleksiyonunu devraldım. 30'dan fazla çözüm ve bir yığın * .vssscc ve * .vspscc dosyası vardı.
Yukarıdaki herkesin girdisine dayanarak, belirli bir kök klasörü yinelemek, dosyaları silmek, ardından TeamFoundationVersionControl bölümünü kaldırmak için çözüm dosyalarını düzenlemek için bir PowerShell işlevi yazdım.
Kullanım Remove_TFSfiles "pathname" $booleanflag
.
Hangi dosyaların etkileneceğini görmek için $false
(uses -whatif) kullanın :
Remove_TFSfiles "C:\MyDevFolder" $false
Bu dosyaları gerçekten silmek için şunu kullanın $true
:
Remove_TFSfiles "C:\MyDevFolder" $true
İşte fonksiyon:
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"
}
}
}