从 .Net Standard 项目中使用 .Net Core 库

3
我有一个使用 .Net Framework 4 开发的标准 WPF 应用程序。现在,我的客户想要一个网站,我打算使用 .Net Core 开发。为了共享业务逻辑,我需要将数据库和业务层移动到一个单独的项目中,在这里我计划使用 .Net Core。因此,所有层,即数据/业务/API 将使用最新版本的 .Net Core 进行重写。
我能否从 WPF (.Net Framework 4) 项目引用使用 .Net Core 编写的业务层?
任何指针都将不胜感激.....
2个回答

4
你应该在.NET Standard库中实现通用功能。然后,您可以从所有与您的公共项目目标的.NET Standard版本兼容的应用程序引用此程序集。
各种.NET实现针对特定版本的.NET Standard,MSDN上的以下表格列出了所有版本的.NET Standard和支持的平台: https://learn.microsoft.com/en-us/dotnet/standard/net-standard
.NET Core的最新版本(当前为2.0)实现了.NET Standard 2.0。实现.NET Standard 2.0的.NET Framework的最旧版本是4.6.1。这意味着你的WPF应用程序应该定位到4.6.1才能使用.NET Standard 2.0程序集。
.NET Core 1.0和.NET Framework 4.5支持.NET Standard 1.0。
.NET Framework 4.0不支持任何版本的.NET Standard,因此您应该将WPF应用程序重新定位到(至少) .NET Framework 4.5。

2
我可以回答您的问题。您可以在WPF (.Net Framework 4)项目中引用使用.Net Core编写的业务层。请按照以下步骤操作:在Visual Studio中创建一个WPF应用程序项目和一个.NET Standard库项目,然后从应用程序项目向库项目添加引用即可。
有些NuGet包不支持.NET Standard项目,因为它们仅支持完整的.NET Framework,但大多数流行的NuGet包都可以从.NET Standard项目中引用。您的问题还标记了[entity-framework-6]。如果您要从.NET Standard项目中使用Entity Framework,则必须使用Entity Framework Core,因为Entity Framework 6需要完整的框架。
为确保您可以按照预期构建应用程序,您可能应该创建一个快速原型。

需要注意的是,EF Core与EF 6相比还有很大的差距,因此OP在决定之前必须仔细分析所使用的API和功能。或者,可以始终在.NET Framework上运行ASP.NET Core(暂时),直到.NET Core具备特定重要功能。 - Tseng
我已将基于WPF的应用程序升级到.Net Framework 4.6,并添加了使用.Net Standard 1.3版本开发的各种层的引用。现在,我遇到了与Microsoft的依赖注入库相关的另一个错误。错误详细信息如下 - 无法加载文件或程序集'Microsoft.Extensions.DependencyInjection.Abstractions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'或其任何依赖项。所定位的程序集清单定义与程序集引用不匹配。有什么建议吗? - Channa
@AnilC:看一下这个带有答案的问题:https://dev59.com/C1YO5IYBdhLWcg3wTPvk 你需要在你的WPF项目中添加绑定重定向。 - Martin Liversage

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接