Conditions support for <Content> section of VSIX manifest
This suggestion is migrated to Developer Community. Please use below link to view the current status.
Currently you can have a single .vsix file targeting several Visual Studio versions. But all the content is deployed to all Visual Studio versions. The request is to be able to deploy content based on conditions such as the Visual Studio version, edition, dependency installed or not, etc.
An scenario for this goal is the following: suppose that I have a single package MyAssembly.dll which has two different .vsct tables with different icons for VS 2010 (colorful) and 2012/2013 (gray). So I get two embedded resources such as Menus1.ctmenu and Menus2.ctmenu. Imagine that somehow I get two .pkdef files (MyAssembly1.pkdef referencing Menus1.ctmenu and MyAssembly2.pkdef referencing Menus2.ctmenu). Now, in a single manifest, in the <content> section, I want to specify MyAssembly1.pkdef for VS 2010 and MyAssembly2.pkdef for other VS versions.
Another scenario for conditional deployment was explained here:
Great suggestion – we’re working on this for a future servicing release of Visual Studio 2017. Thanks!
Now that I have your attention, consider also VSIXs containing multiple conditional manifests (not only conditional .pkgdef files or conditional DLLs). Example: manifest v1 for VS 2010, v2 for VS 2012-VS 2015, v3 for VS 2017, and v4 for the future.
VSX developers want to target multiple VS versions with a single VSIX. The most common question today is "How do I create a VSIX targeting VS 2010-2017? I know that Microsoft considers VS 2010 little used, but the reality is that there are still people using VS 2005 and 2008.
It's also would be useful for natvis files (some natvis features supported only in latest VS)