在.NET Framework应用程序中使用.NET核心类库



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

  • 我的类库构建在.NET Core 3.1上
  • 我的WPF应用程序是在.NET Framework 4.7.2上构建的

我使用实体框架核心访问数据库,我的模型由EF核心工具生成

您有一个使用Microsoft.EntityFrameworkCore的.NET Core 3.1类库和一个应引用此库的.NET Framework 4.7.2应用程序。有不同的选择,它们的努力和局限性各不相同。

迁移到.NET Core

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

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

通常对于小型项目来说,迁移应该是简单而直接的,所以你可以尝试一下。如果它对您不起作用,或者遇到问题,.NET标准方法可能对您更方便。

迁移到.NET标准

另一种选择是将.NET Core库迁移到.NET Standard。要在两个框架之间共享库,您最多可以以.NET Standard 2.0为目标,因为.NET Framework不支持除此之外的任何内容。幸运的是,Microsoft.EntityFrameworkCore库符合这一要求。然而,也有潜在的阻断剂。

  • 您不能更改库项目本身,或者它是外部库
  • 您对不以.NET标准<=为目标的程序包具有依赖项2.0
  • 您依赖于无法替换的.NET Core特定代码

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

多目标

为了完整性,还可以选择多目标库或应用程序项目。在这个过程中,有两个版本的相应项目,每个框架一个。然而,在你的情况下,没有必要这样做,你也不会从投入的努力中受益。

最新更新