SQL Management Studio, TFS Msscci Provider and branching

Recently user has reported problem when using SQL Server Management Studio and TFS. When he branched folder and opened a newly created solution, he kept pending changes on the original projects instead of the branched one. Veterans of source control integration in Visual Studio (2003, 6.0 and others) will probably recognize this problem immediately – solution file has embedded server path, which is not updated during branch operation.

This problem, however, was solved already in VS 2003, by introduction of mssccprj.scc files, which store bindings and are local only. So why SSMS does not use them? Well, it’s a partially our fault, partially weakness of Msscci standard. Creation of mssccprj files is optional and we didn’t enable it for SSMS. The second problem is that we need to know what files should contain bindings, and embed necessary information in mssccprj.scc for them. The knowledge of those files is not standardized and both VSS and TFS msscci providers have necessary file extensions stored in the registry. As you can guess, we didn’t include ssms extensions in that list.

The good news is that you can fix this problem with a simple registry script. Of course be careful – the script is provided without any warranty:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Team Foundation Server MSSCCI Provider]
"BindingExtensions"="vbp, mak, dsp, sln, vbproj, csproj, vcproj, mdp, vfpproj, vdp, vdproj, dbp, vsmproj, vsmacros, hwproj, etp, etpproxy, actproj, atp, dmp, mdmp, dsw, vjsproj, csdproj, vbdproj, ssmssln, ssmssqlproj, ssmsasproj, ssmsmobileproj"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Team Foundation Server MSSCCI Provider\Settings\VssProvider\SQLWB.EXE]