如何在 .NET Core 3.0 中为 WPF 应用程序引用 System.Windows.Forms?

How to reference System.Windows.Forms in .NET Core 3.0 for WPF apps?

我正在将我的 WPF 桌面应用程序从 .NET Framework 迁移到 Core 3.0。 我使用的是 System.Windows.Forms.FolderBrowserDialog() ,现在我陷入了如何将此引用添加到核心项目的问题中。没有可用的“System.Windows.Forms”NuGet 包,是吗?有没有其他方法可以在 Core 中显示 FolderBrowserDialog?

更新

我使用默认模板创建了 Core 项目,然后将 .cs 和 .xaml 文件复制并粘贴到其中。 .csproj 文件如下所示:

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <UseWPF>true</UseWPF>
  </PropertyGroup>

看起来它已经存在:https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.folderbrowserdialog?view=netcore-3.0

对于其他移植问题,您可能需要使用 Windows Compatibility Pack 来帮助将应用程序移植到 .NET Core

可能还有一些与 WPF 和此问题相关的更多信息,因为它已经存在一段时间了。这可能会有所帮助 Select folder dialog WPF,并针对 .NET Core 进行了更新。

祝您升级顺利!

您需要向 csproj 添加一个额外的开关:

<UseWindowsForms>true</UseWindowsForms>

UseWpf下方添加。然后尝试重建。之后,您应该可以使用 Forms 命名空间了。

这就是如何在 .NET 5.0 中为 WPF 应用程序和 WindowsForms 引用 System.Windows.Forms

<PropertyGroup>
   <TargetFramework>net5.0-windows</TargetFramework>
   <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
   <UseWPF>true</UseWPF>
   <UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>