[build] Fix for MSBuild 16.8. #755
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.
We have some "clever" code that attempts to determine if it needs to add
Java.Interop/JniEnvironment.g.csto our compile items, since it may already be there because of file globs, if this isn't a clean run. However this code no longer seems to work under MSBuild 16.8.$(_AddCompile)remainsFalseand thus the file isn't getting added to the compile on first run.Instead we're going to use
KeepDuplicates='false'to do the de-duping for us.The wrinkle is that this file is added as
Java.Interop/JniEnvironment.g.csorJava.Interop\JniEnvironment.g.csdepending on OS, so we need to usePath.Combineto ensure our added file matches the copy from the glob, so the de-dupe will work.Without any de-duping, the build produces a
CS2002: Source file 'JniEnvironment.g.cs' specified multiple timeswarning.