[build] pack .NET .nupkg
files in parallel
#7648
Closed
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.
Previously, we were calling
dotnet pack
serially for many projects, such as:This ends up taking a while:
Instead, we can create a
@(_ProjectsToPack)
item group, set%(AdditionalProperties)
, and call the<MSBuild/>
task:This is faster because:
We don't shell out to a new
dotnet.exe
each time.<MSBuild/>
task knows how to run in parallel, managing multiple MSBuild nodes.This also has the benefit of including these
dotnet pack
commands in the.binlog
. Previously, we would just have console output for them.After these changes, I instead see:
From my numbers before, I am unsure why one of the
dotnet pack
commands took ~24 seconds. But I believe this change should reduce the time to the slowest individualdotnet pack
now.It could save up to ~1 min of time in the
CreateAllPacks
target.