【问题标题】:WPF Control Library Target .NET Core 3 or .NET Framework?WPF 控件库面向 .NET Core 3 还是 .NET Framework?
【发布时间】:2019-09-27 01:46:52
【问题描述】:

我正在将我的 WPF 应用程序从 .NET Framework 移植到 .NET Core 3。我得到了这个在 NuGet 上发布的通用 UI 库,它当前面向 .NET Framework v4.6.1。现在,如果我只是将目标更改为 .NET Core 3,那么它将不再适用于 .NET Framework 项目。 .NET Standard 旨在解决此类问题,但我认为它对 WPF 项目没有帮助。

在这里做什么是正确的?发布和管理 2 个单独的包?

那么这个库还有 2 个其他派生库。如果我为基础库创建 2 个单独的包,这意味着我还必须发布和管理每个派生库中的 2 个。这个解决方案很臭。有更好的吗?

【问题讨论】:

  • .NET Core 3.0 增加了对 WPF 的支持,这是以前不可用的,它还支持 .NET Standard 2.1。从理论上讲,如果您的代码针对 .NET Standard 2.1,它应该可以在 .NET Core 和 .NET Framework 中运行。但由于 .NET Core 中的 WPF 支持是新的,我想如果不亲自动手,就很难说出结果如何。
  • 如果我以 .NET Standard 2.1 为目标,我无法将 WPF 框架添加到项目中
  • 啊!!!我忘了提,.NET Core 中的 WPF 仅在 Windows 平台上受支持,因此它不能成为 .NET Standard 的一部分。我想留给你的唯一选择是维护 2 个代码库。
  • 请注意,.net 5 旨在将两个框架合二为一。 2020 年 11 月似乎还有很长的路要走,但也许您可以考虑在此之前使用旧的 .net。 devblogs.microsoft.com/dotnet/introducing-net-5

标签: c# .net wpf .net-core


【解决方案1】:

面向 .NET Core 3 的 WPF 应用程序实际上可能会引用和使用面向 .NET Framework 4.6.1 的控件库或 NuGet 包。

假设您不使用 .NET Core 中不存在的任何 API,您不必对控件库本身进行任何操作即可使其正常工作,因为那样您最终会遇到运行时错误。

尝试像往常一样添加对 DLL 的引用或安装 NuGet 包。即使 NuGet 包在 lib\net461 中只包含一个程序集,它也应该可以工作。

【讨论】:

  • 你是对的;它只显示警告但有效(大部分时间?)。我遇到了各种其他兼容性问题,所以我认为还不值得急于迁移。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-30
  • 2018-04-21
相关资源
最近更新 更多