Child of #6034.
Advantage is avoid slow disk scan and can avoid temp files from being picked up into the glob and thereby triggering an evaluation of the same (This also causes unwanted UI tree changes).
CPS scans the project cone directory and maintain an in-memory copy of it. If in-VS msbuild evaluation can use the virtual directory state to resolve globbing, it will cutdown time to hit disk, especially during project changes. It will also eliminate some bugs, when globbing picks up temporary file, because the project system and msbuild evaluation doesn’t have a good way to align the disk state when evaluation happens.
[ladipro] Notes from initial investigation:
- MSBuild already supports passing a file system abstraction called
MSBuildFileSystemBase to EvaluationContext.Create.
- MSBuild currently does not expose the default implementation of
MSBuildFileSystemBase so the caller has to provide all functionality by implementing all abstract methods.
-
- File enumeration and existence checks, something we want to be getting from CPS.
-
- File reads, something that should stay in MSBuild.
MSBuildFileSystemBase was created with future needs in mind and some of the functions are not currently used.
Tasks:
Child of #6034.
Advantage is avoid slow disk scan and can avoid temp files from being picked up into the glob and thereby triggering an evaluation of the same (This also causes unwanted UI tree changes).
CPS scans the project cone directory and maintain an in-memory copy of it. If in-VS msbuild evaluation can use the virtual directory state to resolve globbing, it will cutdown time to hit disk, especially during project changes. It will also eliminate some bugs, when globbing picks up temporary file, because the project system and msbuild evaluation doesn’t have a good way to align the disk state when evaluation happens.
[ladipro] Notes from initial investigation:
MSBuildFileSystemBasetoEvaluationContext.Create.MSBuildFileSystemBaseso the caller has to provide all functionality by implementing all abstract methods.MSBuildFileSystemBasewas created with future needs in mind and some of the functions are not currently used.Tasks:
MSBuildFileSystemBaseandIProjectTreein CPS (size:3).