Description
WPF and WinForms are the two components of https://github.com/dotnet/windowsdesktop. The two projects have a long history that has intertwined in various ways over the past 20+ years. Leaning in together as the Win32 managed frameworks we can leverage each-other's efforts, reduce duplication, and make it easier for contributions to accrue to both platforms.
In .NET 10 we plan to start sharing code between the two platforms. WPF already depends on the WinForms build. As such, the shared code will come from the WinForms repo. WinForms introduced a lower-level System.Private.Windows.Core assembly in .NET 9 to facilitate the two packages that ship from WinForms: WinForms itself, and System.Drawing.Common. This no-dependency assembly is the one we'll be sharing throughout both WPF and WinForms.
The better aligned the two repos are, the easier it will be. There are a few key tasks that we want to tackle in the short term to move things forward here in a significant way:
- Align code styles and code analysis (Align WPF and WinForms code style guidelines #10017)
- Enable xUnit unit testing in WPF for all projects (Enable xunit testing in VS with the dispatcher #10023)
- Consume shared testing utilities (System.Private.Windows.Core.TestUtilities)
- Consume System.Private.Windows.Core (Update SplashScreen to use CsWin32 and shared library #10047)
- Start using CsWin32 (Update SplashScreen to use CsWin32 and shared library #10047)
- Use wildcard includes for code files (see System.Windows.Primitives where this is currently done)
- Consider where to locate shared docs (probably WindowsDesktop)
This is an initial brain dump, I'll be adding more here.