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

yau*_*nka 31 c# wpf folderbrowserdialog .net-core

我正在将我的 WPF 桌面应用程序从 .NET Framework 迁移到 Core 3.0。我正在使用 System.Windows.Forms.FolderBrowserDialog() 并且我现在被困在如何将此引用添加到 Core 项目上。没有可用的“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>
Run Code Online (Sandbox Code Playgroud)

Luk*_*lek 69

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

<UseWindowsForms>true</UseWindowsForms>
Run Code Online (Sandbox Code Playgroud)

将其添加到UseWpf下方。然后尝试重建。在此之后,您应该能够使用 Forms 命名空间。

  • 有用!谢谢。两个开关的存在是否会影响性能?我只需要表单中的FolderBrowserDialog。 (2认同)

Ami*_*ito 6

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

<PropertyGroup>
   <TargetFramework>net5.0-windows</TargetFramework>
   <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
   <UseWPF>true</UseWPF>
   <UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)


n23*_*234 5

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

对于其他移植问题,您可能需要使用Windows 兼容包,它用于帮助将应用程序移植到 .NET Core

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

祝您升级顺利!