Using EnvDTE80.Solution2.GetProjectTemplate("ClassLibrary.zip", "VisualBasic") in an add-in to get the full path to the "Class Library" template of Windows returns the one of Windows Metro:
"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ProjectTemplatesCache\VisualBasic\Windows Metro style\1033\ClassLibrary.zip\ClassLibrary.vstemplate"
rather than the one of Windows:
"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ProjectTemplatesCache\VisualBasic\Windows\1033\ClassLibrary.zip\ClassLibrary.vstemplate"
The problem is caused because according to the MSDN docs (http://msdn.microsoft.com/en-us/library/envdte80.solution2.getprojecttemplate.aspx):
"Custom templates require unique file names that do not conflict with the file names defined in:
<drive>:\Program Files\Microsoft Visual Studio <version>\Common7\IDE\ProjectTemplates\Language"
If that applies to custom templates, it should also apply to built-in templates, and it happens that the "ClassLibrary.zip" file name is not unique, VS 11 uses also that name inside the "Windows Metro style" folder that was already used inside the "Windows" folder.
This causes a compatibility problem in add-ins using the GetProjectTemplate method to get the template ClassLibrary.zip of Windows, since something that worked in VS 2010 is broken in VS 11. The solution is to rename the ClassLibrary.zip file inside the "Windows Metro style" folder to MetroClassLibrary.zip file. Notice that this doesn't affect the "Class Library" name displayed in the user interface, it's only a change in the file system. Important: the same applies to CSharp.