【问题标题】:Why an Dot Net Core Class Library or Console App Can Reference A Dot Net 4.6 Class Library?为什么点网核心类库或控制台应用程序可以引用点网 4.6 类库?
【发布时间】:2017-08-30 15:31:00
【问题描述】:

我在谷歌上搜索并获得了一些知识如下:

  1. Net Core 和 Net Framework (4.6.*) 是 .NET 运行时的两种不同实现,它们是平台
  2. .NET Standard 定义了一组 .NET 平台同意实现的 API,它不是运行时

所以我完全理解 NET Core 控制台应用程序和 NET 4.6.1 控制台应用程序都可以添加对某个 .NET 标准库的引用,只要它们兼容。

让我困惑的是

  1. Net Core 1.1 控制台应用可以添加 4.6.1 类库的引用并运行良好
  2. 4.6.1 控制台应用程序无法添加对 Net Core 1.1 类库的引用。

我用 VS2017 15.3 对此进行了测试,我知道有一些关于如何在 Core 应用程序中添加对 4.6.1 dll 的引用的讨论,但所有这些都在谈论旧的核心项目(使用 project.json)自官方 RTM VS2017 以来已过时。 为什么1可以,2不行?

谢谢

【问题讨论】:

标签: .net .net-core .net-standard


【解决方案1】:

这样做是为了能够重复使用现有项目和预构建的程序集(dll 文件),前提是它们只使用 .NET Standard 2.0 中的 API(类型、方法等)。

您是对的,因为它似乎违反直觉并且“不应该起作用”。但是,有一个小的 compatibility layer 可以加载 .NET Framework 程序集,但如果它们使用不受支持的 API,它们可能会失败,因此使用这种兼容性机制很危险,应该检查项目/程序集在这样做之前使用.NET Portability Analyzer

【讨论】:

    猜你喜欢
    • 2017-02-10
    • 1970-01-01
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    相关资源
    最近更新 更多