-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bootstrap improvements #10282
Bootstrap improvements #10282
Conversation
….com/YuliiaKovalova/msbuild into dev/ykovalova/bootstrap_improvements
NuGet asset resolution was picking the wrong TF when looking at ProjectReferences, so build this like an external consumer would. Co-authored-by: YuliiaKovalova <[email protected]>
8185e62
to
0fee63d
Compare
0fee63d
to
0907c8c
Compare
41a3efa
to
6196063
Compare
This feels as it deserves some very small doc on what is the current bootstrap approach on grabbing bits (does it use '.dotnet'?) and what are other alternatives and their pros and cons. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks great!
I'm putting 'requesting changes' just so that the following two things are reviewed (and I'm fine if consciously dismissed):
- The new task might be better to inherit from some of our ready-made base
- The versioning info might benefit from centralization - if easy to do so. Or/and documenting where it needs to be updated and how is the new version determined
Co-authored-by: Rainer Sigwald <[email protected]>
b107f90
to
0428ff2
Compare
54fc686
to
e9ce4ef
Compare
aa7a5bf
to
cb5dd94
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great!
I have couple comments for consideration
c0e58c7
to
5852b3d
Compare
This avoids ever having to block on building the task. I'm leaving the project in place for easier editing, but not including it in the `.sln` so it won't be part of any build--you'd have to open it individually to get a great inner-loop experience with the task.
Pushing this lengthy process before `ResolveProjectReferences` means it's more likely to be able to be scheduled and finish without being on the critical path through builds.
Ok so I am going to be a hyper-nitpicker in the hopes that this shares some of my "how to think about build process changes" opinions. On my machine, this took 17 seconds ( I think we can do better! In general you reduce overall build time by getting work off the critical path. As currently written this is well on the critical path:
But that's not set in stone. We can use a Then we can rearrange the call to the task to be earlier, instead of just-in-time for bootstrap creation (which implicitly delays it until most of the repo has built): d0c2057. On my machine that knocks a good 15 seconds off the end-to-end build time. |
Co-authored-by: Rainer Sigwald <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I still don't like that we seem to need to specify an MSBuild version in the post-bootstrap build, but we can attack that later.
Co-authored-by: Rainer Sigwald <[email protected]>
Fixes #10300
Context
The PR introduces a simplified and transparent way for getting sdk bits and patching the changes to them using install-scripts.
Details can be found in the doc: https://github.com/dotnet/msbuild/blob/5852b3d778362105203ac4e550fd9456028627c5/documentation/wiki/Bootstrap.md
Notes
Might resolve #6566