fsprojects-archive / zzarchive-VisualFSharpPowerTools

[ARCHIVED] Power commands for F# in Visual Studio
http://fsprojects.github.io/VisualFSharpPowerTools/
Apache License 2.0
310 stars 77 forks source link

IProjectProvider / LanguageService / need to split IProjectProvider between data & behaviour. #1440

Closed smoothdeveloper closed 7 years ago

smoothdeveloper commented 7 years ago

Currently IProjectProvider (and the many implementations) is conflating state (set of data defining a project, such as filename, list of files, compiler flags, etc.) and operations (few methods such as get list of references, get FCS project options).

I think in FSharp.Editing we'd want

We'd notice that given a ProjectDescriptor type was defined, we could use it in signatures in LanguageService (we can't do that with IProjectProvider because it itself depends on LanguageService) which in turn would allow to migrate few members currently in VsLanguageService (for no apparent good reason besides they take IProjectProvider), which would help moving more of the logic out of the visual studio project.

Also, considering future client/server plans, we'd have an efficient way to pass ProjectDescriptor handle without a too chatty protocol (we could give id and only use that).

cloudRoutine commented 7 years ago

this should be a comment on #1411