I am maintaining a company internal Visual Studio extension that is packaged and deployed as VSIX container. This extension currently targets VS 2010. It uses several VS API DLLs and references the VS 2010 versions of them.
I am currently migrating this extension to be compatible with VS 2012/2013. I already found out that the old VSIX manifest can be edited manually to allow the extension to additionally install to VS 2012/2013 - this works perfectly.
However some of the VS 2010 APIs I am currently using are not compatible with VS 2012++ and I need to update them - with the effect of giving up backward compatibility.
My question is: How should I structure my solution and VSIX so that It will be compatible with VS 2010, 2012 and 2013. Would it work to have one DLL targeting VS 2010 and one DLL targeting VS 2012/2013 and picking the one to use at extension load time?
Side note: I am using MEF to compose my internal functional units. Does that make it easier in any way?