dotnet / dotnet/wpf

Investigate solutions for fragility between wpf and wpf-int

Open
#9,270 2 comments 0 reactions 0 assignees View on GitHub
Investigate
Dominant language
C#
Stars
7.7k
Forks
1.3k
Avg merge
1d 11h
Merged PRs (30d)
61

Description

Whenever the compiler changes its CIL version (would happen on some VS updates), WPF will break until wpf-int rebuilds and flows into wpf. This is annoying, but a larger problem now with the VMR, because wpf-int must flow to wpf, then wpf into the VMR, before the VMR will build again.

This happens because LTCG compilation to a .lib encodes the CIL rather than compiled machine code. When LTCG linking happens against the input lib + other source objs to create a PE, the CIL versions must match for things to work. This is **generally** not an advised way to compose a product because of the fragility of the CIL interface.

The suggestion is that LTCG should be turned **off** for native libraries in wpf-int that are packaged up into nupkgs and used downstream. We would need to understand the following:
- Why was this turned on in the first place
- What are the performance implications.

bilinearspan.lib appears to be at least one source of issues.

/cc @ViktorHofer @ericstj

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.