zzarchive-VisualFSharpPowerTools icon indicating copy to clipboard operation
zzarchive-VisualFSharpPowerTools copied to clipboard

ProjectProvider & ProjectFactory -> FSharp.Editing

Open cloudRoutine opened this issue 8 years ago • 5 comments

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

  • VirtualProjectProvider should be passed the FSharpCompilerVersion as a parameter instead of the VisualStudioVersion

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

cloudRoutine avatar Jul 13 '16 06:07 cloudRoutine

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

vasily-kirichenko avatar Jul 13 '16 07:07 vasily-kirichenko

@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 avatar Jul 13 '16 23:07 smoothdeveloper

@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?

smoothdeveloper avatar Jul 14 '16 00:07 smoothdeveloper

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.

vasily-kirichenko avatar Jul 14 '16 05:07 vasily-kirichenko

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.

smoothdeveloper avatar Jul 17 '16 03:07 smoothdeveloper