Click here to Skip to main content
13,358,478 members (51,459 online)
Click here to Skip to main content
Add your own
alternative version


13 bookmarked
Posted 24 May 2002

Visual Studio Source Code Control Provider Switcher Add-in

, 29 May 2002
Rate this:
Please Sign up or sign in to vote.
This article shows how to create a VS Add-in that allow you to change the source code control provider

SCC Provider


One of the many aggravations of Visual Studio is the inflexibility in changing the source code control (SCC) provider. After researching the problem, I found that all SCC provider information is stored in the registry under HKEY_LOCAL_MACHINE\SOFTWARE\SourceCodeControlProvider. If you open up the registry and go to this key location, you will, more or less, find the keys self-explanatory. My first attempt to work with this was to create a batch file to change the registry key for me. I then decided to learn how to create add-ins and this is my first add-in project. Since I'm including the source code in this article, I decided against showing code snippets because it wasn't very necessary. This really is a very simple add-in that shouldn't be all that difficult to follow. Hope it meets everyone's approval.

Creating an Add-in

To begin, open Visual C++ and create a new Workspace using the DevStudio Add-in Wizard. Other articles might say that using a wizard is bad, which I tend to agree with, but for a first-time user, that's all one usually has or knows. Give your project a name and click OK. Fill in the add-in name and add a description. This should create various files in your project, among which is Commands.cpp

Open up Commands.cpp and go to STDMETHODIMP CCommands::YourProjectNameCommandMethod(). This is where your code gets called. Next, I proceeded to create a dialog that accessed the registry, and called it using dlg.DoModal() from the previous CCommands' function. Once you're done setting it up, building it should create an add-in DLL that Visual Studio can use.

To use the DLL from within Visual Studio, go to Tools | Customize, or right-click on the menu area and select Customize. Click on the "Add-ins and Macro Files" tab and select browse to search for your add-in. Remember to change the file type at the bottom of the browse dialog from "Macro Files" to "Add-ins", otherwise you won't see it. Once selected, click Open then Close to see a new toolbar appear.

The source code to complete your add-in can be found in the downloadable zips.

Fixes to common problems found:

After selecting your add-in, the name should appear in the "Add-ins and Macro files" tab in the Customize dialog. If you highlight your add-in, the description that you added in the wizard appears on the right hand side. This can be changed in the String Table in the resources window. To change the add-in string that appears in the left hand side, search for DECLARE_REGISTRY in DSAddin.h and change the second argument to fix it.

To change the toolbar icon, modify IDR_TOOLBAR_LARGE and IDR_TOOLBAR_MEDIUM in your add-in workspace.

Limitations in this add-in:

For the life of me, I can't seem to figure out how to change the toolbar name programmatically. Visual Studio tends to name all new toolbars as Toolbar#. This seemed to be the most difficult thing to change. To change it on startup, open up the Customize dialog and click on the "Toolbars" tab. Change the name of the toolbar to whatever you want and click OK.

Recompiling the project without unselecting the add-in and closing Visual Studio. Will have to look into this one some more.

Changing the SCC Provider without having to close Visual Studio.

Once I find more documentation on what the registry values under the Options key are, I will replace them with something more readable.

Building my project under DEBUG mode will probably fail. The problem is due to a hyperlink class that I'm using in my About dialog.

All questions, comments, or feedback are always appreciated.


30 May 2002 - updated source.


This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


About the Author

Bassam Abdul-Baki
Systems Engineer
United States United States
Bassam Abdul-Baki has a Bachelor of Science (BS) degree and a Master of Science (MS) degree in Mathematics and another MS in Technology Management. He's an analyst by trade. He started out in Quality Assurance (QA) and analysis, then dabbled in Visual C++ and Visual C# programming for a while, and then came back to QA and analysis again. He's not sure where he'll be five years from now, but is looking into data analytics.

Bassam is into mathematics, technology, astronomy, archaeology, and genealogy.

You may also be interested in...


Comments and Discussions

QuestionWorks on VC.Net 2003? Pin
gofootn27-Aug-04 12:27
membergofootn27-Aug-04 12:27 
AnswerRe: Works on VC.Net 2003? Pin
Bassam Abdul-Baki27-Aug-04 15:06
memberBassam Abdul-Baki27-Aug-04 15:06 
GeneralNice! Pin
Arnold B28-Mar-04 10:36
memberArnold B28-Mar-04 10:36 
GeneralRe: Nice! Pin
Bassam Abdul-Baki28-Mar-04 13:47
memberBassam Abdul-Baki28-Mar-04 13:47 
Generaladding menu items to (right click) context menues Pin
robinraul12-Mar-03 13:15
memberrobinraul12-Mar-03 13:15 
GeneralSpecifying an add-in's toolbar's name Pin
Paul S. Vickery17-Jun-02 3:08
memberPaul S. Vickery17-Jun-02 3:08 
GeneralRe: Specifying an add-in's toolbar's name Pin
Bassam Abdul-Baki27-Jun-02 15:38
memberBassam Abdul-Baki27-Jun-02 15:38 
GeneralCool ! Pin
Jim Crafton30-May-02 3:40
memberJim Crafton30-May-02 3:40 
GeneralRe: Cool ! Pin
Bassam Abdul-Baki27-Jun-02 15:36
memberBassam Abdul-Baki27-Jun-02 15:36 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web01 | 2.8.180111.1 | Last Updated 30 May 2002
Article Copyright 2002 by Bassam Abdul-Baki
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid