Conversation
Forgind
left a comment
There was a problem hiding this comment.
I got lost in the 'How isolation exemption complicates everything :(' section, so this is only a partial review. I'll try to get back to it next week if I have time.
| When building a graph in isolated mode, the graph is used to traverse and build the projects in the right order, but each individual project is built in isolation. The build result cache will just be in memory exactly as it is today, but on cache miss it will error. This enforces that both the graph and target mappings are complete and correct. | ||
|
|
||
| Furthermore, running in this mode enforces that each (project, global properties) pair is executed only once and must execute all targets needed by all projects which reference that node. This gives it a concrete start and end time, which leads to some perf optimizations, like garbage collecting all project state (except the build results) once it finishes building. This can greatly reduce the memory overhead for large builds. | ||
| Furthermore, running in this mode enforces that each (project, global properties) pair is executed only once and must execute all targets needed by all projects which reference that node. This gives it a concrete start and end time, which leads to some potential perf optimizations, like garbage collecting all project state (except the build results) once it finishes building. This can greatly reduce the memory overhead for large builds. |
There was a problem hiding this comment.
It seems like some of this could be replaced with references to the new doc you wrote. (Doing so would make it less likely our docs would stay stale if this changes.)
There was a problem hiding this comment.
I'll do a pass and try to reduce duplicates.
There was a problem hiding this comment.
Upon looking over it, not much can be reduced. My intention was to keep high level information in this document, and move all code implementation details into the other one.
There was a problem hiding this comment.
Ok, sounds good. My best idea for how to completely eliminate any duplicate information would also be a nightmare to maintain, so... 😄
Co-authored-by: Forgind <Forgind@users.noreply.github.com>
Co-authored-by: Forgind <Forgind@users.noreply.github.com>
Co-authored-by: Forgind <Forgind@users.noreply.github.com>
Co-authored-by: Forgind <Forgind@users.noreply.github.com>
Co-authored-by: Forgind <Forgind@users.noreply.github.com>
Co-authored-by: Forgind <Forgind@users.noreply.github.com>
Co-authored-by: Forgind <Forgind@users.noreply.github.com>
The changes reflects the state of things with #5222's changes. As potential extra changes go into #5222, I'll also update this PR.
More specifically, #5222 implements this region of the docs: https://github.com/microsoft/msbuild/compare/master...cdmihai:cacheAndIsolationDocumentation?expand=1#diff-5de82af4d8f52787d69b38fd58c509caR44