mirror of
https://github.com/icsharpcode/ILSpy.git
synced 2026-10-12 02:15:58 +00:00
The exporter dropped PresentationFramework, System.Xaml, System.Windows.Forms and System.Drawing from every project it wrote, whatever the assembly used, while a second list held the remaining WPF assemblies behind a WPF check. The SDK draws the line elsewhere: Microsoft.NET.Sdk.WindowsDesktop.props promotes the nine _WpfCommonNetFxReference items to _SDKImplicitReference only when UseWPF is set, System.Windows.Forms only when UseWindowsForms is, and WindowsFormsIntegration only when both are. A XAML-only assembly therefore lost a reference that nothing supplied, and a WPF application that also used Windows Forms lost the Windows Forms references while the project only said UseWPF. Following the SDK there makes WPF and Windows Forms independent rather than alternatives, which is what the flags enum is for: an assembly can use both, and then both properties have to be written. Where an assembly looks like more than one kind of project, the web SDK wins the Sdk attribute, because Microsoft.NET.Sdk.Web imports Microsoft.NET.Sdk and so carries the desktop targets, while Microsoft.NET.Sdk.WindowsDesktop carries no web targets. System.Drawing stays unconditional: Microsoft.NET.Sdk.BeforeCommon.targets adds it for every .NETFramework target rather than only for Windows Forms ones, and on .NET Core it ships in the Microsoft.NETCore.App reference pack. Assisted-by: Claude:claude-opus-5[1m]:Claude Code