[release/5.0] Fixing deterministic build bug in WPF's BAML files #4958
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.
Fixes Issue #3876
Main PR
Description
Building a WPF .NET Core project with dotnet.exe is not deterministic, but building it with msbuild.exe is deterministic as expected: .NET Core does not create identical .BAML files.
During compilation, WPF creates an optimized binary version of .XAML files, called .BAML. The .BAML files between two different builds sometimes have references in the references section written in a different order. .BAML created from the same .XAML file should always be the same.
This PR is based on this fix from @MichaeIDietrich.
Customer Impact
Builds may not be deterministic.
Regression
No regression.
Testing
The fix was testing building some projects using the
dotnet buildcommand, and comparing the generated files using a diff program. Without the fix, the files are almost always different.Risk
Low. This change only makes the order of references written to BAML consistent.