Using Team System source control with Visual Studio .NET 2003
The VSTS team recently released a beta
MSSCCI (Microsoft Source Code Control Interface) provider for Team System -- now you can use Team System source control in
any application that supports the SCCI interfaces! Unfortunately, I didn't have any luck getting the provider to work with Beyond Compare, which
supports SCCI interfaces in version 2.4. But
the primary audience for this provider is Visual Studio .NET 2003 and Visual Studio 6. And it definitely works in VS.NET 2003.
One unfortunate limitation of the beta version of the provider, however, is that you need to
run a special registry file to disable strong name validation for its assemblies before it will run without crashing. You can
download a copy of this registry file from us in case you need it.
Once you fix up the registry, the VSTS SCCI provider works great in Visual Studio .NET 2003 .. with one caveat. Visual Studio 2003, unlike 2005,
does not allow you to switch between SCCI providers. I recommend using Soenke Schau's
Sourcecode Control Switcher app, which provides the missing SCCI switching functionality:

Now you can choose between SourceSafe, VSTS, and any other third party source code control providers with ease in Visual Studio .NET 2003. I think you have to exit and restart the IDE between switches, though.
Once the VSTS MSSCCI provider was installed, I created a new console application in Visual Studio .NET 2003, then right clicked the project and selected
Add to Source Control:

Then I'm prompted for the Team System server I wish to connect to.

Once I connect, I select a VSTS source folder to store the project in. I'm choosing the root here:

From here on out, it behaves nearly identically to SourceSafe, at least in terms of
IDE integration. Here's the source control menu for the main class of the console app:

It may look familiar, but this is VSTS source control, which means it's worlds better than ye olde SourceSafe. For one thing, as you can see in the source control options, it now defaults to
shared checkouts: