【问题标题】:What are the problems with mixing .NET Framework and .NET CORE? [closed]混合 .NET Framework 和 .NET CORE 有什么问题? [关闭]
【发布时间】:2019-12-03 22:47:03
【问题描述】:

我有大量针对 .NET Framework 4 编写的中间和后端组件(存储库、服务等),但它们仍然与我现在正在处理的新项目相关。这个新项目的前端将使用 ASP .NET CORE2.2 编写。 我应该怎么做 - 在 .NET CORE 中重新创建所有组件,或者让后端针对 .NET Framework 运行而前端针对 CORE 运行?在例如方面有什么考虑?性能?

【问题讨论】:

  • 您应该查看 .NET 标准库。

标签: c# asp.net asp.net-core .net-framework-version


【解决方案1】:

通过组件,我想您是在谈论类库。您应该意识到,类库的目标框架基本上只是指定了特定的 API 兼容性。最终打包的实际框架代码是根据实际应用的目标框架而定的。

换句话说,您可以将面向 .NET Framework 的类库项目的引用添加到面向 .NET Core 的应用程序中,然后将该应用程序发布到仅安装了 .NET Core 的计算机上,然后它将运行(没有 .NET 框架)。理论上,至少。

.NET Core 在技术上不支持 .NET Framework 引用。它支持 .NET 标准参考。但是,.NET Standard 2.0 的 API 占用空间足够大,并且 .NET Framework NuGet 包和其他在 Internet 上浮动的库的目录也足够大,以至于微软调整了编译器以允许直接引用 .NET Framework 库。大多数以 .NET Framework 为目标的代码实际上可以以 .NET Standard 为目标,而无需更改,Microsoft 确定在大多数情况下掷骰子是足够安全的,而不是等待每个库维护者更改其库的目标框架到 .NET Standard(其中许多库甚至不再维护)。

但是,有一个很大的警告。当你这样做时,你会得到一个编译器警告,基本上是告诉你这里没有保证。它会让你添加引用并尝试来使用它,但如果使用了任何不受 .NET Core 支持的 API,它就会崩溃并烧毁。然后由您来彻底测试您的应用程序,确保没有任何损坏,然后您可以取消警告,如果您愿意的话。

长话短说,你可以直接引用 .NET Core 2.0+ 中的 .NET Framework 库。它们实际上可能无法正常工作,但只要它们不使用任何不受支持的 API(通常是特定于 Windows 的东西,如绘图、音频、GUI/绘画等),那么你会没事的。

但是,如果您维护这些库,最好的办法是将它们重新定位到 .NET Standard 2.0。如果您可以让他们在此基础上进行编译,那么您将知道不会有任何问题,而不仅仅是猜测或希望,而且它不会对任何现有的 .NET 产生任何影响也使用它们的框架应用程序。

【讨论】:

  • 谢谢克里斯。听起来第二个才是正确的选择!一个非常有用且经过深思熟虑的答案。当然,现在我会提出各种其他问题,但我不希望有人指责我问的问题太宽泛……哎呀,等等!人山人海啊!嗯……
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-10
  • 1970-01-01
  • 2016-10-30
  • 1970-01-01
  • 1970-01-01
  • 2016-11-08
  • 2019-10-22
相关资源
最近更新 更多