Late bind CopyUpToDateMarker #2213
Merged
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.
PR #2180 caused a performance-test scenario internal to Microsoft to
start failing. The root cause was that the projects in the test
customized
$(IntermediateOutputPath)very late, after importingCSharp.targets (and transitively Common.targets). That meant that the
path stored in
$(CopyOutOfDateMarker)was no longer under$(IntermediateOutputPath), and that the directory wasn't created beforethe new code attempted to touch the marker file.
Ideally, projects would set
IntermediateOutputPathbefore importingcommon.targets, but that hasn't been strictly required in all cases
before so requiring it now is an unacceptable regression.
The late customization was handled for other intermediate outputs by
defining their paths with items (expanded after all properties are
expanded) rather than properties (expanded in order).
There are other properties defined by using
$(IntermediateOutputPath),$(_GenerateBindingRedirectsIntermediateAppConfig)and$(WinMDExpOutputPdb). This PR doesn't change those since they weren'trecently regressed.