[release/9.0.1xx] Fix path to tool settings file in build #48877
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.
Backport of #47788 to release/9.0.1xx
Description
This change fixes a race condition/file contention bug in the .NET SDK Tools packaging targets that prevented multi-targeted Tools from successfully packaging. There's a metadata file that's created as part of the packaging process that is logically TFM-specific, but was being created/managed in a TFM-agnostic location. As a result, that file would be written to multiple times in the parallel inner-TFM packaging steps. Making this file write to a TFM-specific location makes the build race-condition-free once again.
Customer impact
The Microsoft.Extensions team publishes .NET Tools and has requested this backport so that they can remove several hacks/workarounds from their builds. We've had feedback from external users that were also impacted by this bug that the fix in the 10 nightlies fixes their builds as well.
Regression
No - this race condition was always present in the targets, people just didn't make many multi-targeted tools, or got lucky with race condition timing.
Risk
Low - we use this same RID-specific file location for a large number of other TFM-specific files during the build in other scenarios.
Testing
Manual testing during the initial fix, manual testing from internal teams and external users.
/cc @baronfel @dsplaisted