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

Use msbuild evaluation to drive some views (like Solution Explorer) #1066

Open
TheAngryByrd opened this issue Mar 1, 2023 · 2 comments
Open

Comments

@TheAngryByrd
Copy link
Member

While discussing an issue on FSharp.Formatting. @baronfel brought up

the act of loading the project file is evaluation, and after evaluation you have access to all properties that are statically-known (including those delivered by SDKs)

Currently in AdaptiveLSPServer, we do a full reload on changes to the project files, so say changing file order in ionide, This would require a reload for the view to refresh. For smaller projects this may not be noticeable but for for larger projects it feels laggy. Perhaps we could drive some of these views from an "evaluated" project file. References might disappear or maybe we can have some type of delta/merge logics so it doesn't look laggy.

@TheAngryByrd
Copy link
Member Author

Example of slow moving file: Moving-file-slow

@baronfel
Copy link
Contributor

baronfel commented Mar 9, 2023

Here's a model of the interactions here to discuss tomorrow:

sequenceDiagram
    actor User
    participant Ionide
    participant FSAC
    participant ProjectSystem
    participant MSBuild
    
    User->>Ionide: Add file to project
    Ionide->>FSAC: fsproj/addFile
    FSAC->>FSAC: modifies project file directly
    ProjectSystem->>MSBuild: evaluate project file with changes
    MSBuild->>ProjectSystem: send MSBuild evaluation results
    ProjectSystem->>FSAC: send updated project information
    FSAC->>Ionide: send 'project loaded' notification
    Ionide->>Ionide: update solution explorer with new project file list
Loading

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants