diff --git a/src/VisualStudio/Core/SolutionExplorerShim/HierarchyItemToProjectIdMap.cs b/src/VisualStudio/Core/SolutionExplorerShim/HierarchyItemToProjectIdMap.cs index 46c6e7688b7d1..4932a8941a31c 100644 --- a/src/VisualStudio/Core/SolutionExplorerShim/HierarchyItemToProjectIdMap.cs +++ b/src/VisualStudio/Core/SolutionExplorerShim/HierarchyItemToProjectIdMap.cs @@ -6,7 +6,6 @@ using Microsoft.CodeAnalysis.Host.Mef; using Microsoft.VisualStudio.LanguageServices.Implementation.ProjectSystem; using Microsoft.VisualStudio.Shell; -using Microsoft.VisualStudio.Shell.Interop; namespace Microsoft.VisualStudio.LanguageServices.Implementation.SolutionExplorer { @@ -47,6 +46,16 @@ public bool TryGetProjectId(IVsHierarchyItem hierarchyItem, string targetFramewo var project = _workspace.DeferredState.ProjectTracker.ImmutableProjects .Where(p => { + // We're about to access various properties of the IVsHierarchy associated with the project. + // The properties supported and the interpretation of their values varies from one project system + // to another. This code is designed with C# and VB in mind, so we need to filter out everything + // else. + if (p.Language != LanguageNames.CSharp + && p.Language != LanguageNames.VisualBasic) + { + return false; + } + // Here we try to match the hierarchy from Solution Explorer to a hierarchy from the Roslyn project. // The canonical name of a hierarchy item must be unique _within_ an hierarchy, but since we're // examining multiple hierarchies the canonical name could be the same. Indeed this happens when two