3

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

它似乎在构建时导致了一个问题:

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

Idem 与DateTimeEnumDecimal,...

好像两个项目中的对象都不一样。我尝试使用 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 的错误。但是,根据这个框架所需的配置,这意味着我不能再部署到 Windows XP。学习...

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

4

2 回答 2

2

.net 版本必须至少为 4.6 才能引用 .net 标准项目或 nuget 包。仅来自 Visual Studio 2017 或更高版本的额外提示,您将能够参考此内容。Visual Studio 2015 将无法工作。

于 2020-02-25T10:07:03.903 回答
2

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

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

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

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

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

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

于 2020-02-25T10:18:28.697 回答