Don't save data on immutable files to per-project disk cache #8802
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Contributes to #8635
Context
With #8688 we no longer need to cache data on immutable framework files on disk as obtaining this information is cheap and does not require I/O.
Changes Made
Made
SystemState
(the RAR cache) not add such files to the per-instance dictionary. This dictionary is serialized to disk as<project-file>.AssemblyReference.cache
so the change effectively makes the cache file smaller, saving on serialization and deserialization time.Also refactored
DeserializeCache
into a generic method instead of taking aType
parameter.For a simple ASP.NET Core app with one project reference and one package reference, the size of the cache file is reduced from 142 kB to 2 kB. Projects with no references other than the SDK will not have the cache file created at all.
Testing
Existing unit tests, manual measurements.
Notes
The actual "Don't read the file if the data is already in memory" change will be in a separate upcoming PR.