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

40

我正在将我的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>

文档显示该类存在:https://learn.microsoft.com/pl-pl/dotnet/api/system.windows.forms.folderbrowserdialog?view=netcore-3.0 - 请粘贴csproj文件 - 可能TargetFramework是错误的。 - Lukasz Szczygielek
请检查更新后的问题。我也看了页面,但编译器报错“命名空间'System.Windows'中不存在类型或命名空间名称为'Forms'”,并没有引用导入建议。 - yaugenka
3个回答

86

你需要在csproj中添加一个额外的开关:

<UseWindowsForms>true</UseWindowsForms>

请将它添加到UseWpf下方,然后尝试重新构建。完成后,您应该能够使用Forms命名空间。


2
可以了!谢谢。两个开关的存在会对性能产生影响吗?我只需要从Forms中的FolderBrowserDialog。 - yaugenka
@Hostel,怎么才能弄清楚这个问题呢?谢谢,正是我需要的。 - orangecaterpillar
1
先生,您今天赢得了互联网的荣誉!耶!蛋糕! - Jammer

12

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

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

5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接