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



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

它似乎在构建时引发了一个问题:

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

带有DateTime枚举小数的Idem。。。

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

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

编辑1

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

项目"Std.cssproj"以"netstandard2.0"为目标,它不能被以".NetFramework,Version=v4.0"为目标的项目引用

编辑2

我在.Net core 2.0中的依赖项和在.Net Framework 4.6:中的应用程序仍然会出现同样的错误

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

编辑3

我终于用.Net Framework 4.6.1消除了这个错误。但是,根据这个框架所需的配置,这意味着我不能再部署到Windows XP了。学习。。。

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

我需要一个[…].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 Framework版本必须至少为4.6才能引用.NET Standard项目或nuget包。

此外,您还需要Visual Studio 2017或更新版本才能使用该引用。Visual Studio 2015将不起作用。

最新更新