将 .Net Framework 应用程序与 .Net Core 库混合

sin*_*rix 9 .net c# compatibility .net-core

在 Visual Studio 解决方案中,我需要一个依赖于 .Net Core 库项目的桌面 winforms 应用程序项目(.Net Framework 4.0)。我还无法将应用程序迁移到 .Net core,但我需要 .Net core 的功能(即 Microsoft.EntityFrameworkCore)。这就是我创建一个新项目作为依赖项的原因。

它似乎在构建时引起了问题:

对类型“Object”的引用声称它是在“System.Runtime”中定义的,但找不到

同上DateTime,Enum,Decimal,...

好像两个项目中的对象不一样。我尝试使用 Microsoft.Windows.Compatibility 但它似乎不是一个解决方案。

有没有办法让两个项目一起构建和运行?

编辑1

我尝试使用 .Net 标准项目而不是 .Net core,但在这种情况下,我什至无法将 .Net Framework 应用程序的引用添加到 .Net 标准库。

项目“Std.csproj”的目标是“netstandard2.0”,它不能被目标为“.NetFramework,Version=v4.0”的项目引用

编辑2

我在 .Net core 2.0 中的依赖项和 .Net Framework 4.6 中的应用程序仍然遇到相同的错误:

项目“Std.csproj”以“netstandard2.0”为目标,它不能被以“.NetFramework,Version=v4.6”为目标的项目引用

编辑3

我终于摆脱了 .Net Framework 4.6.1 的错误。但是,根据该框架所需的配置,这意味着我无法再部署到Windows XP。学习...

由于我的目标是逐步迁移到 .Net Core,因此欢迎任何建议。

nvo*_*igt 5

我需要一个 [...] .Net Framework 4.0,具体取决于 .Net Core 库项目。

有没有办法让两个项目一起构建和运行?

不

对不起。这不是它的工作方式。您不能直接从 .NET Core 引用 .NET Framework 程序集,也不能反过来从 .NET Framework 引用 .NET Core 程序集。

(我有轻微的似曾相识的感觉,我会尝试找到这方面的重复项)。

您可以做的是在 .NET Standard 中创建一个共享程序集,两者都可以引用,但在这种情况下,它实际上不会帮助您,因为您需要更高的 .NET Framework 版本才能使用 .NET Standard 2.0。

有效的方法是在程序集之间创建连接,而不是通过引用进行直接程序集绑定。一个可以通过 HTTP 上的 REST 或通过内存映射文件或任何其他方式来调用另一个,使两种不兼容的技术进行通信。

  • “...无法直接从 .NET Core 引用 .NET Framework 程序集”这并不完全正确,.NET Core 确实支持运行一些面向 4.6.1 或更低版本的 Framework 程序集。 (2认同)