Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dependencies tree should appear populated when the project first appears in Solution Explorer #8949

Open
drewnoakes opened this issue Mar 31, 2023 · 1 comment
Assignees
Labels
Feature-Dependency-Node "Dependencies" node in Solution Explorer that display project, binary & package references Performance-Scenario-Solution-Explorer This issue affects solution explorer performance. Performance-Scenario-Solution-Open This issue affects solution open performance. Tenet-Performance This issue affects the "Performance" tenet. Tenet-User Friendly This issue affects the "User Friendly" tenet; UI usability, accessibility or high-DPI related. Triage-Approved Reviewed and prioritized

Comments

@drewnoakes
Copy link
Member

drewnoakes commented Mar 31, 2023

Today, when a project loads, the Dependencies node appears with no children, and no ▷ icon to suggest that it's expandable:

image

Then, some time later (commonly several seconds) the children appear:

image

We should have enough information at the time the tree is first created to display it in populated form, even if only via the evaluation data.

We should display the tree immediately.

@drewnoakes drewnoakes added Tenet-User Friendly This issue affects the "User Friendly" tenet; UI usability, accessibility or high-DPI related. Feature-Dependency-Node "Dependencies" node in Solution Explorer that display project, binary & package references labels Mar 31, 2023
@drewnoakes drewnoakes self-assigned this Mar 31, 2023
@kvenkatrajan kvenkatrajan added the Triage-Approved Reviewed and prioritized label Apr 6, 2023
@drewnoakes drewnoakes added Tenet-Performance This issue affects the "Performance" tenet. Performance-Scenario-Solution-Open This issue affects solution open performance. Performance-Scenario-Solution-Explorer This issue affects solution explorer performance. labels Apr 24, 2023
@drewnoakes
Copy link
Member Author

With the dependencies tree rewrite, this now appears much faster.

The root graft provider (DependenciesTreeProvider) is initialized synchronously, yet the first snapshot of data arrives asynchronously. To guarantee that the tree is populated when it first appears, we would have to introduce a wait in the tree provider which would slow down the arrival of the rest of the tree (in theory at least). In practice, any delay should be minimal as we can populate the dependencies tree from evaluation-only data, just like CPS does the rest of the tree.

Still, with the APIs we have today it'd be a sync-over-async wait, which doesn't seem great.

One other benefit of contributing to the initial population of the tree is the lack of hierarchy change events that come with a deferred update. This could contribute positively to solution load performance.

Finally, if we populate the tree early enough (which happens sometimes with the rewrite by chance — there's a race) then any previous tree expansion state is restored on project load, which is a nice change, and makes the dependencies tree behave like the rest of Solution Explorer.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Feature-Dependency-Node "Dependencies" node in Solution Explorer that display project, binary & package references Performance-Scenario-Solution-Explorer This issue affects solution explorer performance. Performance-Scenario-Solution-Open This issue affects solution open performance. Tenet-Performance This issue affects the "Performance" tenet. Tenet-User Friendly This issue affects the "User Friendly" tenet; UI usability, accessibility or high-DPI related. Triage-Approved Reviewed and prioritized
Projects
None yet
Development

No branches or pull requests

2 participants