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

ProjectProvider & ProjectFactory -> FSharp.Editing #1411

Open cloudRoutine opened 7 years ago

cloudRoutine commented 7 years ago

Dependent upon completion of Open Documents Tracker #1410

IProjectProvider interface will be defined and the ProjectProvider type will be implemented in VFPT.Core. (Logic may still need to have a VsProjectProvider that implements the IProjectProvider interface). The ProjectProvider implementation can probably be changed to acquire compilation flags, project contents and configurations settings,

Most of the ProjectFactory business logic can be changed to respond to events sent from the logic side. Any data that requires the DTE for acquisition should be sent from Logic to Core

WIP - Need to review further to layout how to split roles between ProjectFactory in Core and Logic

Code Located @ https://github.com/fsprojects/VisualFSharpPowerTools/blob/master/src/FSharp.Editing.VisualStudio/ProjectSystem/ProjectProvider.fs https://github.com/fsprojects/VisualFSharpPowerTools/blob/master/src/FSharp.Editing.VisualStudio/ProjectSystem/ProjectFactory.fs

vasily-kirichenko commented 7 years ago

I'd like to rename it to ISolution/Solution.

smoothdeveloper commented 7 years ago

@cloudRoutine having IProjectProvider moved to core would simplify work I'm doing on GoToDefinitionFilter as i'd need not to get rid of it / ISolution.

So for now, I won't move stuff to Core but focus on other remaining dependencies.

smoothdeveloper commented 7 years ago

@vasily-kirichenko I agree we should have something for Solution but we can't just rename it I believe, for example GetReferencedProjects doesn't make sense on Solution and probably other inconsistencies.

I think we can start define Solution and move the "identified once for all projects in solution" aspects to that interface when they become identified.

What do you all think?

vasily-kirichenko commented 7 years ago

Solution concept for us is just "set of projects", nothing more. I don't think it should do anything beyond simple operations like "opened", "closed", "project loaded", "project updated", etc.

smoothdeveloper commented 7 years ago

We can split out ProjectDescriptor (a record with the same member as the get properties in current IProjectProvider) as I was (kind of) describing in #1440, I think this should be done disregarding the fact that #1410 is done or not.