在 win 表单项目文件中将 UseWPF 设置为 true 无法识别 ApplicationConfiguration bootstrap 代码

Setting UseWPF to true in a win forms proj file fails to recognize ApplicationConfiguration bootstrap code

在面向 .NET 6 的 WinForms 桌面应用程序中,proj 文件中的 UseWindowsForms 元素设置为 True,并生成 bootstrap ApplicationConfiguration.Initialize(); 并且从启动文件调用 Program.

现在我想通过将 UseWPF 设置为 True 来启用 WPF。当我这样做并构建时,我在输出日志

中收到以下错误

Program.cs(11,13,11,37): error CS0103: The name 'ApplicationConfiguration' does not exist in the current context.

如果我注释掉应用程序构建的那一行,我可以从 WinForm 打开 WPF window。但是 win 表单 windows 看起来不同,因为它们没有正确初始化所以我想继续调用 ApplicationConfiguration.Initialize();

知道如何将 UseWPF 设置为 True 并仍然使用 ApplicationConfiguration.Initialize(); 吗?谢谢

复制

  1. 在 VS 2022 中针对 .NET 6 创建一个新的 Windows Forms 项目。
  2. 转到项目属性并选中 Enable WPF for this project 复选框
  3. 向项目添加 WPFwindow
  4. 建造

您现在将获得

Program.cs(11,13,11,37): error CS0103: The name 'ApplicationConfiguration' does not exist in the current context.

在输出日志中。 (错误列表很混乱,可能什么也没有显示)

项目文件

按照上述步骤,proj 文件如下所示:

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

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net6.0-windows</TargetFramework>
    <Nullable>enable</Nullable>
    <UseWindowsForms>true</UseWindowsForms>
    <ImplicitUsings>enable</ImplicitUsings>
    <UseWPF>True</UseWPF>
  </PropertyGroup>

</Project>

我遇到了同样的问题,我做了两件事:

  1. 我将此问题发布在 GitHub WinForms 问题上,它已被设置为 .NET 7 里程碑 Link -> Github WinForm Issue
  2. 我在 Winforms (NET 6) 中的 EnableWPF 解决方法代码是编辑 Program.CS 文件以 下面:

在 Program.CS 中注释下面的代码 -(以后取消注释并检查 .NET 修复或 VS IDE 更新是否修复了该问题)

//ApplicationConfiguration.Initialize();

然后在评论下方添加如下代码

Application.SetHighDpiMode(HighDpiMode.SystemAware);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());