【问题标题】:How to reference System.Windows.Forms in .NET Core 3.0 for WPF apps?如何在 .NET Core 3.0 中为 WPF 应用程序引用 System.Windows.Forms?
【发布时间】:2020-03-09 16:53:31
【问题描述】:

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

【问题讨论】:

  • 文档显示该类存在:docs.microsoft.com/pl-pl/dotnet/api/… - 请粘贴 csproj 文件 - 可能 TargetFramework 错误。
  • 请查看更新后的问题。我也看到了这个页面,但是编译器给出了错误The type or namespace name 'Forms' does not exist in the namespace 'System.Windows' 并且没有参考导入建议。

标签: c# wpf .net-core folderbrowserdialog


【解决方案1】:

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

<UseWindowsForms>true</UseWindowsForms>

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

【讨论】:

  • 有效!谢谢你。两个开关的存在是否会影响性能?这只是我需要从表单中获取的 FolderBrowserDialog。
  • @Hostel 如何解决这个问题?谢谢,正是我需要的。
  • 你先生,今天刚刚赢得了互联网!耶!蛋糕!
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    看起来已经存在: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 进行了更新。

    祝您升级顺利!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-24
      • 2019-06-11
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 2019-12-29
      相关资源
      最近更新 更多