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

Mixing .Net Framework app with .Net Core library

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

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

对类型 'Object' 的引用声称它在 'System.Runtime' 中定义,但无法找到它

DateTimeEnumDecimal、...[=11= 相同]

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

有没有办法同时构建和运行两个项目?

编辑 1

我尝试使用 .Net 标准项目而不是 .Net 核心,但在这种情况下,我什至无法将 .Net 框架应用程序的引用添加到 .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 的错误。但是,根据此框架的 required configuration,这意味着我无法再部署到 Windows XP。学习...

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

.net 版本必须至少为 4.6 才能引用 .net 标准项目或 nuget 包。 Extra cavat only from visual studio 2017 or newer you'll be able to reference this. Visual studio2015年不行

I need to have a [...] .Net framework 4.0 depending on a .Net Core library project.

Is there a way to have both projects build and run together?

没有

对不起。这不是它的工作方式。您不能直接从 .NET Core 引用 .NET Framework 程序集,或者从 .NET Framework 中引用 .NET Core 程序集。

(我有点似曾相识,我会尝试找到重复的)。

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

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