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
-
VirtualProjectProvider
should be passed theFSharpCompilerVersion
as 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.