project.json 依赖项针对不同版本的 NETStandard.Library

project.json dependencies targeting different versions of NETStandard.Library

我有一个 class 库,其中 project.json 文件如下所示:

{
  "version": "1.0.0-*",

  "dependencies": {
    "NETStandard.Library": "1.6.0",
    "System.Security.Claims": "4.0.1"
  },

  "frameworks": {
    "netstandard1.2": {
      "imports": "dnxcore50"
    }
  }
}

它以netstandard1.2为目标,同时使用依赖于netstandard1.3System.Security.Claims.4.0.1。而且它还使用 NETStandard.Library.1.6.0。这意味着我可以使用 netstandard1.2 中不存在的任何 classes/methods。但与此同时,我的项目编译得很好。

为什么不报错?看起来编译器没有根据全局依赖项验证 "frameworks" 部分中列出的平台,对吧?但这是什么原因呢?

这一行"imports": "dnxcore50"就是它起作用的原因。如果你删除它,你将有一个Package System.Security.Claims 4.0.1 is not compatible with netstandard1.2 (.NETStandard,Version=v1.2).

而对于 "NETStandard.Library": "1.6.0",,只会引用 netstandard1.2 和更少的依赖项,因此您将无法使用 classes/methods 中不存在的任何 classes/methods 13=](1.6.0没有link到netstandard1.6