是否可以为 .NET 6.0 应用程序同时启用 Winforms 和 WPF?

Is it OK to enable both Winforms and WPF for a .NET 6.0 application?

如图所示here and here(均在同一 Microsoft 页面上).NET 6.0 应用程序可以面向 Winforms 和 WPF。但这会在某个时候引起冲突吗?不清楚的是两者是否可以在同一个项目中作为目标。

那么,可以将两者同时定位还是 alters the MSBuild pipeline to correctly process a Windows Forms project 会与 alters the MSBuild pipeline to correctly process a WPF project 冲突?

项目属性选项卡中 Visual Studio 的外观如下:

我问的原因是因为我想在 WPF 应用程序中使用某些来自 Winforms 的 类。

是的,没关系,在某些有效的情况下您可能想要添加这两个框架。 documentations 中已经提到了,如果需要,您可以同时添加:

  • Add a UI framework property (or both, if necessary):

例子也一样:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net6.0-windows</TargetFramework>

    <UseWPF>true</UseWPF>
    <!-- and/or -->
    <UseWindowsForms>true</UseWindowsForms>
  </PropertyGroup>

</Project>

是的,这很好用。您可以让应用程序同时使用 WinForms 和 WPF,甚至混合使用。甚至还有用于在 Winforms window 中托管 WPF 控件和在 WPF window 中托管 WinForms 控件的控件(参见 here)。

广泛执行此操作时存在一些限制(WPF 托管 WinForms 控件、托管 WPF 控件主机...等可能无法正常工作)但我一直在开发一个将所有内容混合在一起的 GUI(出于遗留原因)它通常运行良好。