Registering Missing Data Providers with Visual Studio 2012

In using the preview releases of Visual Studio 2012, something that eventually became a stumbling block was missing .NET data providers in the IDE. The .NET components themselves can be manually registered in the toolbox, but if you want tooling support (for instance for strongly-typed datasets or EF) you need the data provider registered in the IDE.

At first I switched back to Visual Studio 2010 to do these specific tasks. One of the great features of Visual Studio 2012 is its file compatibility (project round-tripping) with Visual Studio 2010. However, after a few times of doing this I decided there had to be a better way.

I tried Googling around a bit, but most of the references I found were for how component developers can register their own data providers with the IDE. For me, though, the problem was getting data providers installed that don’t yet have support for the next version of Visual Studio.

My next intuition was to search the registry. So, I fired up regedit, accepting that lovely UAC prompt, and searched for the name of one of the data providers that was registered in Visual Studio 2010 but not Visual Studio 2012 – in my case Advantage Database Server.


In the end there were four relevant results in the following locations:

HKEY_LOCAL_MACHINESOFTWAREMicrosoftVisualStudio10.0DataProviders
HKEY_LOCAL_MACHINESOFTWAREMicrosoftVisualStudio10.0DataSources
HKEY_CURRENT_USERSoftwareMicrosoftVisualStudio10.0_ConfigDataProviders
HKEY_CURRENT_USERSoftwareMicrosoftVisualStudio10.0_ConfigDataSources

Under each of these keys are another series of keys with GUID names. Selecting a GUID key will show the details of the data provider (or data source) on the right.


So, to get this single data source & provider registered in the Visual Studio 2012 IDE, I ended up locating the four specific keys to my missing data source & provider (all had the same GUID name, but in each of the above locations), and exporting those registry entries to .reg files with the right-click context menu.


Then, I edited those four .reg files in Notepad, changing any references from “VisualStudio10.0″ to “VisualStudio11.0″. Finally, after saving, I double-clicked each of the four .reg files, accepting the small army of dialogs, and fired up Visual Studio 2012. Adding a new data source showed that the data providers were now registered and working.


I may end up writing a little utility for doing this with the ability to target any version of Visual Studio but, until then, the above steps are pretty simple (if not a little manual).

Update: Thanks to user ieaglle for pointing out that the HKLM paths will be different if you are running a 64-bit edition of Windows. The paths are:

HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftVisualStudio10.0DataProviders
HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftVisualStudio10.0DataSources

Update #2: Thanks again to user ieaglle for pointing out that additional keys must be taken into consideration for SQLite. The paths are:

HKEY_CURRENT_USERSoftwareMicrosoftVisualStudio10.0_ConfigPackages
HKEY_CURRENT_USERSoftwareMicrosoftVisualStudio10.0_ConfigServices

0 thoughts on “Registering Missing Data Providers with Visual Studio 2012

  1. ieaglle

    Thanks for article!

    I want to add a SQLite dataprovider/datasource to VS2012, but there is no keys named “DataSources” and “DataProviders” under HKEY_LOCAL_MACHINE/…

    I’ve copied keys under HKEY_CURRENT_USER/… from 10th version to 11th but there is no any new Data Source or Data Provider.

    Don’t you know what can be wrong?

    Reply
    1. nwoolls

      Do you have VS2010 installed as well? VS2010 will need to be installed so that the data provider installer finds and creates the right registry keys.

      Reply
    2. nwoolls

      Double-check that you are looking under “10.0″ and not “10.0_Config”. There is a slight difference in the paths between the HKCU and HKLM paths. I’ve done this on a few different machines now and those registry paths were there in each case.

      Reply
      1. nwoolls

        I’m honestly not sure why you are seeing a different set of registry keys. I have a ridiculously long list of keys underneath HKEY_LOCAL_MACHINESOFTWAREMicrosoftVisualStudio10.0 on all of my VS2010 machines.

        Reply
      2. nwoolls

        Sorry I couldn’t be more help! Let me know if you find your solution please and I’ll update this blog post with your findings. I checked out two different Windows 8 VM’s and a Windows 7 VM, each with VS2010 installed. In each case the key HKEY_LOCAL_MACHINESOFTWAREMicrosoftVisualStudio10.0DataProviders existed.

        Reply
      3. ieaglle

        And either of them were 32-bit right? :)

        All that keys are under HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftVisualStudio10.0

        I’ve copied them to 11 but no luck right now.

        Okay, I’ll inform you.

        Reply
    3. nwoolls

      Thanks – too right. A friend of mine just let me know that it may be in Wow6432Node if you are running a 64-bit OS. My VM’s are all 32-bit.

      Reply
      1. ieaglle

        I’ve resolved this problem. There additional two keys:
        under HKEY_CURRENT_USERSoftwareMicrosoftVisualStudio10.0_ConfigPackages and
        under HKEY_CURRENT_USERSoftwareMicrosoftVisualStudio10.0_ConfigServices

        I’ve copied them to 10th branch and now they’re available in VS 2012.

        Thanks.

        Reply
  2. jason.m

    It is not necessary to register entries for HKEY_CURRENT_USER. Visual Studio is responsible to sync with HKEY_LOCAL_MACHINE configs to HKEY_CURRENT_USER when startup.

    Visual Studio 2012 has a bug and could not do this sync work. All previous VS versions work well.

    Reply
  3. Pingback: Registering Missing Data Providers with Visual Studio 2012 - Khai's WonderWorld | Khai's WonderWorld

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>