【问题标题】:Why can .Net Core Applications use .Net Framework libraries?为什么 .Net Core Applications 可以使用 .Net Framework 库?
【发布时间】:2019-06-13 15:44:07
【问题描述】:

一头雾水,希望有人能直截了当。

  • 我创建了一个简单的 .Net Core 2.2 控制台应用程序,然后在同一解决方案中创建了一个单独的 .Net Framework 4.6.2 库项目。
  • 我实际上能够从 .Net Core 应用程序中引用 .Net Framework 库,并从那里使用一个非常简单的方法(例如,只返回一个字符串)。应用运行良好。

我从this 之类的答案中了解到这是不可能的。

如果我在控制台库中使用任何非 .Net Core 原生的 .Net Framework 代码,那么应用程序会在运行时崩溃吗?如果是这种情况,有人可以提供一个导致应用程序崩溃的示例吗?

【问题讨论】:

  • 尝试AppDomain.CreateDomain,它与PlatformNotSupportedException 一起崩溃。这是一个很好的例子,有时你会得到MethodNotFoundException等。
  • @DanielBalas 让它崩溃了,谢谢!

标签: .net .net-core


【解决方案1】:

之所以有效,是因为 .NET Core(实际上是 .NET Standard)具有兼容性填充程序,只要 .NET Framework 程序集仅使用受支持的类型/方法(“API”),就可以在受支持的运行时上加载它们。

另请参阅Compatibility shim used by .NET Standard 2.0 和其中的文档链接,了解有关兼容性层的更多详细信息。

【讨论】:

  • 请记住,如果您要将应用程序发送到 Mac 或 Linux 环境,您的应用程序将无法运行,因为这些依赖项不会在非 Windows 机器上安装/运行.
  • 确实如此,这就是兼容性垫片的魔力。因此,只要您不使用注册表或 .net 框架或 Windows 特定功能,许多事情实际上都可以工作 - 这就是他们首先创建兼容性垫片的原因
猜你喜欢
  • 2019-07-17
  • 1970-01-01
  • 2018-02-02
  • 1970-01-01
  • 2011-06-29
  • 2022-11-17
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
相关资源
最近更新 更多