Fix Warning MSB8027 by replacing PreprocessorDefinitions with AdditionalOptions in Bootstrap target #5782
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.
This change addresses MSBuild warning MSB8027 that occurs when multiple targets in BeforeClCompileTargets modify the same parameter.
Technical Details:
Semantic Equivalence: PreprocessorDefinitions and AdditionalOptions are semantically equivalent for defining preprocessor macros. Both /D MACRO_NAME (AdditionalOptions) and MACRO_NAME;%(PreprocessorDefinitions) achieve the same compilation result.
Root Cause: When two targets in BeforeClCompileTargets both modify the same parameter (e.g., PreprocessorDefinitions), the second target to execute may cause duplicate entries to be added to the cl compile command due to parameter modification conflicts.
Solution: By using different but equivalent parameters (PreprocessorDefinitions vs AdditionalOptions), we can avoid this MSBuild parameter collision issue while maintaining the same functionality.
Scope:
This commit specifically addresses the Bootstrap target. The GenerateUndockedRegFreeWinRTCpp target has the same underlying issue, but modifications to it cause arm64EC build failures in WinUI projects. Further investigation is needed before addressing that target, so this change is submitted as an incremental fix for the Bootstrap scenario.
Testing: This change has been tested to ensure no functional regression while eliminating the MSBuild warning.
A microsoft employee must use /azp run to validate using the pipelines below.
WARNING:
Comments made by azure-pipelines bot maybe inaccurate.
Please see pipeline link to verify that the build is being ran.
For status checks on the main branch, please use TransportPackage-Foundation-PR
(https://microsoft.visualstudio.com/ProjectReunion/_build?definitionId=81063&_a=summary)
and run the build against your PR branch with the default parameters.