zzarchive-VisualFSharpPowerTools
zzarchive-VisualFSharpPowerTools copied to clipboard
ProjectProvider & ProjectFactory -> FSharp.Editing
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
VirtualProjectProvidershould be passed theFSharpCompilerVersionas a parameter instead of theVisualStudioVersion
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
I'd like to rename it to ISolution/Solution.
@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.
@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?
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.
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.