How to share calculated properties between projects (trying to speed up dependency resolution) #12417
Unanswered
brettshearer
asked this question in
Q&A
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
We have a very large dependency graph that currently uses assembly references (about 3500 projects) and is now multitargeting both .net framework and .net. This has led to our graph having about 7500 vertices and 400,000 edges.
For a long time we were reading the csproj files directly using XML, but as the teams used more and more functionality from MSBuild this became impractical (we even put a property in TargetFrameworks element for current .net version).
To read our projects, it now takes 3 minutes of 'multithreaded madness' and almost burns a hole in my desk (poor laptop).
I am considering any and all ways to improve this.
One idea I had was to compute all of the different combinations of props/targets files for our folder structure (.editorconfig is a nightmare as we are also implementing code cleanup at the same time, so for the argument leaving this file out). This way, there are only a handful of combinations of props/targets files.
Can I somehow retrieve the properties for each permutation (via xmlReader) and inject my working folder somehow?
Then, add these properties back in when processing each real project.
Alternately, can I run the evaluator code directly and choose just the properties/items I am interested in.
I'm even happy to ignore conditions, and just find the maximum possible references. This would get me back about half an hour of compute per build.
Beta Was this translation helpful? Give feedback.
All reactions