在 .NET Framework 应用程序中使用 .NET Core Class 库
Consume .NET Core Class Library in .NET Framework app
我的 .NET Core class 库为我的数据库提供了一个模型,我的 WPF 应用程序需要引用此 class 库才能访问数据库。是否可以从 WPF 应用程序添加对 class 库的引用并使用该模型?
- 我的 Class 库基于 .NET Core 3.1
- 我的 WPF 应用是基于 .NET Framework 4.7.2 构建的
我使用Entity Framework Core访问数据库,我的模型是由EF Core生成的工具.
您有一个 class 库用于 .NET Core 3.1 使用 Microsoft.EntityFrameworkCore
和一个 .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 <= 2.0 为目标的包
- 您依赖无法替换的 .NET Core 特定代码
如果您可以迁移 .NET Standard 并希望同时支持 .NET Framework 和 .NET Core,这是使您的库可重用且易于维护的方法。事实上,如果您的依赖项和您的代码符合 .NET Standard 2.0 迁移几乎不费吹灰之力。
多目标
为了完整起见,还可以选择多目标您的库或应用程序项目。在这个过程中对应的项目有两个版本,每个框架一个。但是,在您的情况下,没有必要这样做,您将不会从付出的努力中受益。
我的 .NET Core class 库为我的数据库提供了一个模型,我的 WPF 应用程序需要引用此 class 库才能访问数据库。是否可以从 WPF 应用程序添加对 class 库的引用并使用该模型?
- 我的 Class 库基于 .NET Core 3.1
- 我的 WPF 应用是基于 .NET Framework 4.7.2 构建的
我使用Entity Framework Core访问数据库,我的模型是由EF Core生成的工具.
您有一个 class 库用于 .NET Core 3.1 使用 Microsoft.EntityFrameworkCore
和一个 .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 <= 2.0 为目标的包
- 您依赖无法替换的 .NET Core 特定代码
如果您可以迁移 .NET Standard 并希望同时支持 .NET Framework 和 .NET Core,这是使您的库可重用且易于维护的方法。事实上,如果您的依赖项和您的代码符合 .NET Standard 2.0 迁移几乎不费吹灰之力。
多目标
为了完整起见,还可以选择多目标您的库或应用程序项目。在这个过程中对应的项目有两个版本,每个框架一个。但是,在您的情况下,没有必要这样做,您将不会从付出的努力中受益。