diff --git a/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/Tree/Dependencies/Models/AnalyzerDependencyModel.cs b/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/Tree/Dependencies/Models/AnalyzerDependencyModel.cs index f6509dd7dc1..f36513eefa9 100644 --- a/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/Tree/Dependencies/Models/AnalyzerDependencyModel.cs +++ b/src/Microsoft.VisualStudio.ProjectSystem.Managed/ProjectSystem/Tree/Dependencies/Models/AnalyzerDependencyModel.cs @@ -8,9 +8,15 @@ namespace Microsoft.VisualStudio.ProjectSystem.Tree.Dependencies.Models { internal class AnalyzerDependencyModel : DependencyModel { + // NOTE we include ProjectTreeFlags.FileSystemEntity here so that Roslyn can + // correctly identify the analyzer's path in order to attach child nodes to + // these dependency items in Solution Explorer. Without this flag, CPS will + // remove whatever file path we pass during tree construction (for performance + // reasons). + private static readonly DependencyFlagCache s_flagCache = new( - resolved: DependencyTreeFlags.AnalyzerDependency + DependencyTreeFlags.SupportsBrowse, - unresolved: DependencyTreeFlags.AnalyzerDependency + DependencyTreeFlags.SupportsBrowse); + resolved: DependencyTreeFlags.AnalyzerDependency + DependencyTreeFlags.SupportsBrowse + ProjectTreeFlags.FileSystemEntity, + unresolved: DependencyTreeFlags.AnalyzerDependency + DependencyTreeFlags.SupportsBrowse + ProjectTreeFlags.FileSystemEntity); private static readonly DependencyIconSet s_iconSet = new( icon: KnownMonikers.CodeInformation, diff --git a/tests/Microsoft.VisualStudio.ProjectSystem.Managed.UnitTests/ProjectSystem/Tree/Dependencies/Models/AnalyzerDependencyModelTests.cs b/tests/Microsoft.VisualStudio.ProjectSystem.Managed.UnitTests/ProjectSystem/Tree/Dependencies/Models/AnalyzerDependencyModelTests.cs index ee316fa1ce9..cea01960b83 100644 --- a/tests/Microsoft.VisualStudio.ProjectSystem.Managed.UnitTests/ProjectSystem/Tree/Dependencies/Models/AnalyzerDependencyModelTests.cs +++ b/tests/Microsoft.VisualStudio.ProjectSystem.Managed.UnitTests/ProjectSystem/Tree/Dependencies/Models/AnalyzerDependencyModelTests.cs @@ -37,7 +37,8 @@ public void Resolved() Assert.Equal( DependencyTreeFlags.AnalyzerDependency + DependencyTreeFlags.SupportsBrowse + - DependencyTreeFlags.ResolvedDependencyFlags, + DependencyTreeFlags.ResolvedDependencyFlags + + ProjectTreeFlags.FileSystemEntity, model.Flags); } @@ -69,7 +70,8 @@ public void Unresolved() Assert.Equal( DependencyTreeFlags.AnalyzerDependency + DependencyTreeFlags.SupportsBrowse + - DependencyTreeFlags.UnresolvedDependencyFlags, + DependencyTreeFlags.UnresolvedDependencyFlags + + ProjectTreeFlags.FileSystemEntity, model.Flags); } @@ -102,7 +104,8 @@ public void Implicit() DependencyTreeFlags.AnalyzerDependency + DependencyTreeFlags.SupportsBrowse + DependencyTreeFlags.ResolvedDependencyFlags - - DependencyTreeFlags.SupportsRemove, + DependencyTreeFlags.SupportsRemove + + ProjectTreeFlags.FileSystemEntity, model.Flags); } }