dotnet / project-system

The .NET Project System for Visual Studio
MIT License
959 stars 385 forks source link

Build Acceleration handles duplicate copy items #9454

Closed drewnoakes closed 2 months ago

drewnoakes commented 2 months ago

Fixes #9001

Build Acceleration gathers items to copy from referenced files, transitively. Each copy item includes a relative path, to which the file should be copied (relative to the output path of the project being built).

It's possible for multiple projects to specify copy items with the same relative target path. When this occurs, only one file will end up in the output directory at that location. The exact rules defining which file "wins" in this case are complex. The situation is relatively rare however.

This change makes Build Acceleration disable itself in cases where duplicate relative target paths exist. The project will fall back to calling MSBuild so that the correct behaviour is guaranteed.


Note to reviewers: There are some small cleanup commits that make the overall diff a little cluttered. The core change here is in 97539d8c73c8714b5f25ed13babd3dac70463d83.

Microsoft Reviewers: Open in CodeFlow
drewnoakes commented 2 months ago

Also fixes: