【问题标题】:Consume .NET Core Class Library in .NET Framework app在 .NET Framework 应用程序中使用 .NET Core 类库
【发布时间】:2020-07-28 02:26:17
【问题描述】:

我的 .NET Core 类库为我的数据库提供了一个模型,我的 WPF 应用程序需要引用这个类库才能访问数据库。是否可以将 WPF 应用程序的引用添加到类库并使用此模型?

  • 我的类库基于 .NET Core 3.1
  • 我的 WPF 应用基于 .NET Framework 4.7.2 构建

我使用 Entity Framework Core 访问数据库,我的模型是由 EF Core 工具生成的。

【问题讨论】:

  • 你可以尝试为.net标准编译你的类库。
  • 或者只是将 WPF 应用程序迁移到 .NET Core。
  • 是的@Clemens 我正在考虑这个,但我想在未来这样做
  • 我已经升级了几个应用程序。简单的升级过程可以是最小的。更复杂的应用程序可以看到一个又一个问题。不仅仅是编译失败。之前和之后的应用程序行为存在一些细微的差异。速度有所提高,当然您的应用也可以轻松转换。
  • @Andy 所说的“升级”是指将 WPF 应用程序从 .NET Framework 转换为 .NET Core?

标签: wpf .net-core class-library .net-framework-version


【解决方案1】:

您有一个使用 Microsoft.EntityFrameworkCore 的 .NET Core 3.1 类库和一个应引用此库的 .NET Framework 4.7.2 应用程序。有不同的选项在努力和限制上有所不同。

迁移到 .NET Core

自 .NET Core 3.0 起,Windows 应用程序支持 WPF。这意味着您可以将应用程序迁移到 .NET Core 3.1 并直接使用您的库项目。那里有很多教程,see MSDN 供参考。迁移的潜在问题包括以下几个方面。

  • 您不能或不想删除 .NET Framework
  • .NET Core WPF 实现和运行时行为的差异
  • 对 .NET Framework 项目或包的引用/依赖项
  • C++\CLI 互操作依赖项

通常对于小型项目,迁移应该简单直接,因此您可以尝试一下。如果它不适合您或遇到问题,.NET Standard 方法可能对您更方便。

迁移到 .NET Standard

另一种方法是将 .NET Core 库迁移到 .NET Standard。要在两个框架之间共享库,您最多可以针对 .NET Standard 2.0,因为 .NET Framework 执行 not support anything beyond that。幸运的是,Microsoft.EntityFrameworkCore 库符合此要求。但是,也有潜在的阻碍因素。

  • 您不能更改库项目本身或者它是外部库
  • 您对不针对 .NET Standard 的包有依赖项
  • 您依赖于无法替换的 .NET Core 特定代码

如果您可以迁移 .NET Standard 并希望同时支持 .NET Framework 和 .NET Core,这是使您的库可重用且易于维护的方法。事实上,如果您的依赖项和代码符合 .NET Standard 2.0 迁移几乎不费吹灰之力。

多目标

为了完整起见,还可以选择多目标库或应用程序项目。在这个过程中,对应的项目有两个版本,每个框架一个。但是,在您的情况下,没有必要这样做,而且您不会从付出的努力中受益。

【讨论】:

    猜你喜欢
    • 2019-07-17
    • 1970-01-01
    • 2020-06-08
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 2016-10-04
    相关资源
    最近更新 更多