dotnet / dotnet/project-system

Investigate providing browse objects lazily

Open
#5,703 0 comments 0 reactions 0 assignees View on GitHub
Area-External-CPS Feature-Dependency-Node Needs-CPS-work Performance-Scenario-Solution-Open Priority:2 Tenet-Performance Triage-Investigate
Dominant language
C#
Stars
1k
Forks
415
PR merge metrics
No merged PRs in 30d

Description

Currently in CPS, all tree items are constructed with a populated browse object. This means each tree item retains its `IRule` instance even though the vast majority of these will never be displayed.

CPS provides these objects to VS in response to an event.

We should investigate whether there would be benefit to a CPS extension point that would allow producing these objects lazily.

These objects could use standard WinForms-era component model attributes for the properties grid rather than requiring XAML-backed rules.

---

Look at `GetPropertySlow` in CPS's `ProjectNode.Hierarchy.cs` and it's call through to `SimpleHierarchyNode.GetNodeProperties`.

Also look at CPS PR for folder items https://dev.azure.com/mseng/VSIDEProj/_git/VSIDEProj.CPS/pullrequest/141315?_a=files

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.