为什么Dot Net Core类库或控制台应用程序可以引用Dot Net 4.6类库?

时间:2017-08-30 15:31:01

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

我在Google上搜索并获得以下信息:

  1. Net Core和Net Framework(4.6。*)是.NET运行时的两种不同实现,它们是平台
  2. .NET Standard定义了一组.NET平台同意实现的API,它不是运行时
  3. 所以我完全理解.NET Core控制台应用程序和.NET 4.6.1控制台应用程序可以添加对某个.NET标准库的引用,只要它们是兼容的。

    令我困惑的是

    1. Net Core 1.1控制台应用程序可以添加4.6.1类库的引用并运行良好
    2. 4.6.1控制台应用程序无法添加对Net Core 1.1类库的引用。
    3. 我用VS2017 15.3进行了测试,我知道有一些关于如何在Core应用程序中添加对4.6.1 dll的引用的讨论,但所有这些都讨论了旧的核心项目(使用project.json)自官方RTM VS2017以来已经过时了。 为什么1是可以的,而2则不可能?

      由于

1 个答案:

答案 0 :(得分:0)

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

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